包详细信息

@umijs/bundler-mako

umijs202.2k0.11.13

null

自述文件

⚠️ Notice: we are working on making a better bundler on top of Turbopack, see https://github.com/umijs/mako/issues/1872.

If you encountered some critical problems when using current Mako, you can report issues at Mako 0.x Feedback in discussions.

Mako logo # Mako 🦈 codecov Mako ['mɑːkoʊ] is an extremely fast, production-grade web bundler based on Rust. ✨ See more at makojs.dev.

Who's using Mako?

  • Web App,Hybrid App, Mini Program (Partly), Low Code, Serverless in Ant Group
  • Ant Design using Mako for its website
  • Umi integrated Mako for its bundling
  • Dumi integrated Mako for its bundling
  • Father integrated Mako for its bundling

Getting Started

Create a new mako project with the following command.

$ npm create mako

Check out the https://makojs.dev/ for more information.

CONTRIBUTING

Read CONTRIBUTING.md.

CHANGELOG

Read CHANGELOG.md.

CONTACT US

Read Feedback on makojs.dev on joining the discussion, contacting the maintainers, and joining the mako contributors.

CREDITS

This project is inspired by:

  • webpack, which inspired lots of ideas of Mako.
  • swc by @kdy1, which powered the parsing, transforming and codegen of Mako.
  • farm by @brightwu, which inspired the tree shaking, plugin system and others of Mako.
  • rspack, which inspired the tree shaking of Mako.
  • oxc-resolver by @Boshen which powered the resolver of Mako.
  • Oxc by @Boshen from which we learned a lot about how to develop efficiently in Rust.
  • biome by @ematipico from which we learned a lot about how to develop efficiently in Rust.
  • module-federation by @ScriptedAlchemy,which inspired a lot and powered the module federation feature of Mako.

LICENSE

MIT

🤝 Contributing

Contribution Leaderboard

更新日志

0.11.12

2025-05-23

0.11.11

2025-05-09

0.11.10

2025-04-22

0.11.9

2025-04-18

0.11.8

2025-04-17

  • fix: disable parallel sassLoader because sassOptions.function can not be shared cross workers by xusd320 in #1816
  • fix: use transpiled hmr runtime entry by xusd320 in #1815

0.11.7

2025-04-16

0.11.6

2025-03-11

  • fix: 修复sass/less-loader的路径解析 by YufJi in #1771
  • feat: support to disable camel2DashComponentName of transformImport by xusd320 in #1773

0.11.5

2025-02-28

0.11.4

2025-02-12

0.11.3

2025-01-16

0.11.2

2025-01-10

0.11.1

2025-01-02

0.11.0

2024-12-27

0.10.0

2024-12-19

0.9.9

2024-12-12

0.9.8

2024-12-06

0.9.7

2024-11-25

0.9.6

2024-11-14

0.9.5

2024-11-07

0.9.4

2024-11-04

0.9.3

2024-10-25

0.9.2

2024-10-16

  • feat: support webpackIgnore and makoIgnore magic comment by @sorrycc in #1636
  • feat: add transform plugin hook by @sorrycc in #1637
  • feat: add transformInclude plugin hook by @sorrycc in #1639
  • fix: import namespace optimize panic with nested for of stmt by @stormslowly in #1640
  • fix: duplicate_package_checker panic when package.json has no version field by @sorrycc in #1634

0.9.0

2024-10-14

0.8.15

2024-10-10

0.8.14

2024-09-25

  • fix: bundler-mako dev server load chunks failed with 504 error code by @stormslowly in #1612

0.8.13

2024-09-23

0.8.12

2024-09-13

0.8.11

2024-09-10

  • fix: env_replacer should not replace user defined variable in scope by @xusd320 in #1577

0.8.10

2024-09-05

0.8.8

2024-09-05

0.8.7

2024-08-30

  • refactor: 🎨 assign tpl's span to literal string by @stormslowly
  • perf: reapply pr 1509 and sourcemap missing when chain_map is empty by @xusd320
  • chore: ✨ strip span when parsing define's expression by @stormslowly
  • feat: support to control crossorigin for async chunk scripts and links by @PeachScriptpull/1539
  • refactory: in str-impl chunk generate, remove cm when merge_code_and_sourcemap by @stormslowly
  • fix: entry support sub paths by @sorrycc
  • fix: filename too long when use pnpm by @Jinbao1001
  • refactor: Unify the static server in bundler-mako and devServer by @whyer11
  • feat: #1491 add duplicate package checker plugin by @jeasonnow
  • fix: #1478 support react class-component hot-update by @jeasonnow
  • fix(plugin:emotion): panic when target to chrome 40 by @stormslowly

0.8.6

2024-08-26

0.8.5

2024-08-26

0.8.4

2024-08-23

  • fix: should not alias define XXX to process.env.XXX by @xusd320 in #1504

0.8.3

2024-08-22

  • fix: wrong file extension for map file paths in stat.json by @stormslowly in #1506
  • fix: resolve failed when package use node as key by @sorrycc in #1516
  • perf: merge source map, speed up generation by 800% by @xusd320 in #1509
  • perf: optimize group_chunks, speed up group_chunks by 500% by @xusd320 in #1475
  • refactor: improve regex convention for px2rem config by @xiaohuoni in #1469
  • refactor: improve behavior of define config by @xusd320 in #1505

0.8.2

2024-08-16

0.8.1

2024-08-16

0.8.0

2024-08-08

  • [Breaking Change] refactor: not write stats.json anymore by @xusd320 in #1485
  • feat: less support "globalVars" by @gin-lsl in #1465
  • feat(bundler-mako): generate dynamicImportToRequire from babel and webpack config by @PeachScript in #1479
  • refactor: avoid underscore prefix for chunk file name by @PeachScript in #1471

0.7.9

2024-08-01

0.7.8

2024-07-25

0.7.7

2024-07-23

0.7.6

2024-07-18

0.7.5

2024-07-11

0.7.4

2024-07-02

0.7.3

2024-07-01

0.7.2

2024-06-26

  • Improved module concatenate implementation, merged modules still support Shared Reference by @stormslowly in #1295
  • Fix hmr http response without setting content-type causing garbled text issue by @whyer11 in #1307

0.7.1

2024-06-20

0.7.0

2024-06-20

  • Added Code splitting granular strategy (breaking upgrade), enabled by GRANULAR_CHUNKS environment variable by @xusd320 in #1269
  • Added using path configuration for plugins feature by @sorrycc in #1292
  • Added concurrent processing less files under node.js version 16 feature by @xusd320 in #1280
  • Improved alias configuration to vec to avoid unordered issue by @Jinbao1001 in #1289
  • Fixed Symbol being overwritten by user code, causing lower version products unusable issue by @stormslowly in #1279
  • Fixed modules not going through Interop processing in dynamic import issue by @stormslowly in #1209
  • Fixed an issue where a module was unusable when simultaneously imported and referenced by a worker by @xusd320 in #1278
  • Fixed circular reference in export * issue by @stormslowly in #1277
  • Fixed the issue of the React variable being deleted in TypeScript using react classic mode by @Jinbao1001 in #1285
  • Fixed wrong use of external configuration like window.xxx by @xusd320 in #1293
  • Fixed dynamic import unable to resolve part of the path in template strings issue by @Jinbao1001 in #1224

0.6.0

2024-06-13

  • Added: Improved build API (includes Break Change) by @sorrycc in #1271
  • Added: Support for resource output with new URL() by @sorrycc in #1261
  • Added: Notify users that the current platform is not supported on win32 platform by @sorrycc in #1262
  • Added: Automatically find an available port when the port is occupied by @sorrycc in #1266
  • Added: Automatically open the browser when the development server is ready by @sorrycc in #1267
  • Added: Basic product analyze capability by @LovePlayCode in #1228
  • Fixed: Use non-blocking IO due to lack of support in Rust by @xusd320 in #1252
  • Fixed: globalThis property access by @xusd320 in #1254
  • Fixed: Problem of default export being skipped by @stormslowly in #1257
  • Fixed(concatenate): Export conflicts between root and internals by @stormslowly in #1256
  • Fixed(concatenate): Runtime execution order by @stormslowly in #1263
  • Fixed: try resolve should support config.ignores by @sorrycc in #1264

0.5.4

2024-06-06

0.5.3

2024-06-04

  • Fixed: Update chunk URL mapping when adding async imports in watch mode by @xusd320 in #1220
  • Fixed: Pattern not starting with a dot not matched by @stormslowly in #1230
  • Fixed(fix_helper_inject_position): Missing export variable ctxt by @sorrycc in #1236
  • Optimization: Update mako bundler to accommodate new mako version by @Jinbao1001 in #1229

0.5.2

2024-05-31

0.5.1

2024-05-30

0.5.0

2024-05-29

  • Add watch.ignorePaths configuration by @sorrycc in #1179
  • Add support for externals and commonjs require by @sorrycc in #1185
  • Add rscClient.logServerComponent configuration by @sorrycc in #1200
  • Add stats.modules configuration to generate modules with dependencies and dependents by @sorrycc in #1202
  • Add useDefineForClassFields configuration by @stormslowly in #1181
  • Optimize watch, dev_server, and hmr configurations (includes Break Change) by @sorrycc in #1206
  • Optimize improvements in parseServerStats by @sorrycc in #1203
  • Fix hooks transmission loss issue by @Jinbao1001 in #1170
  • Fix the "too many files open" error in the with-antd example during watch by @zhangpanweb in #1022
  • Fix decorator visitor should run before preset env by @stormslowly in #1176
  • Fix node scenario, add packages to be ignored by @sorrycc in #1182
  • Fix less, disable parallel less loader on Linux for node version < 20.12.0 by @xusd320 in #1184
  • Fix node version check in less loader by @xusd320 in #1188
  • Fix re-parser to add ctxt by @stormslowly in #1189
  • Fix px2rem min_pixel_value should accept absolute value by @sorrycc in #1192
  • Fix swc bug in exporting functions with array parameters in chrome 50 by @sorrycc in #1199
  • Fix duplicate assets information in watch mode by @xusd320 in #1194
  • Fix incorrect ctx type by @stormslowly in #1196
  • Fix rsc support for moduleIdStrategy hashed by @sorrycc in #1201
  • Fix fix_helper_inject_position to support exported const arrow functions by @sorrycc in #1207
  • Fix stripping of exported namespace types in ts by @stormslowly in #1198
  • Fix panic on wrong watch result event by @sorrycc in #1212
  • Fix should regroup when adding dynamic dependencies in watch mode by @xusd320 in #1213
  • Fixed inlineCSS not working by @stormslowly in #1211

0.4.17

2024-05-16

0.4.16

2024-05-11

  • Fixed Chinese characters in artifacts not converted to unicode issue by @sorrycc in #1146
  • Fixed the issue of merging ignored modules during module merge optimization causing undefined variables by @stormslowly in #1149

0.4.15

2024-05-10

  • Optimize px2rem support for min_pixel_value configuration by @sorrycc in #1141
  • Fix the issue where px2rem would panic when using attribute selectors without a value by @sorrycc in #1140
  • Fix the issue that the node patch solution does not support timers by @sorrycc in #1142

0.4.14

2024-05-09

  • Turn on concatenate modules by default by @stormslowly in #1126
  • Fix the potential instability of chunk id ordering by @stormslowly in #1117
  • chore: add log for parallel generate by @xusd320 in #1127
  • Fix the issue where re-grouping of chunk does not happen when dependency types change in a hot update scenario by @xusd320 in #1124

0.4.13

2024-05-06

  • Add support for specifying the path of a virtual file through ?path by @stormslowly in #1102
  • Add global __mako_chunk_load__ method by @sorrycc in #1111
  • Optimize mako CLI to support specifying mode by @sorrycc in #1114
  • Fix concatenate inner global var conflict with other modules' top level vars by @stormslowly in #1100
  • Fix the issue that node polyfill does not work in identifier shorthand scenarios by @stormslowly in #1104
  • Fix the issue where manifest is not output during the dev stage by @sorrycc in #1106
  • Fix the issue where stats.json is not output during the dev stage by @sorrycc in #1108
  • Fix the cjs build scenario (for SSR) by @Jinbao1001 in #1109
  • Refactor to remove lazy_static by @xusd320 in #1103
  • Refactor the overall directory structure by @sorrycc in #1105
  • Refactor okam to mako, while also making the @alipay scope's packages public under @umijs by @sorrycc in #1113

0.4.12

2024-04-28

  • Fix the issue where the bin field in the okam package's package.json was missing by @sorrycc in #1092
  • Fix runtime error in node environments by ensuring css is only loaded during the browser phase by @sorrycc in #1095
  • Fix the issue where empty css chunks should not be output by @xusd320 in #1097
  • Fix the issue where css should not be loaded in node environments (potential performance improvement) by @sorrycc in #1098
  • Fix the issue where polyfills were not replaced within inner in concatenate by @stormslowly in #1099

0.4.11

2024-04-25

0.4.10

2024-04-16

  • Add support for forkTSChecker by @ctts and @sorrycc in #956
  • Optimize generate to parallelize entry execution, speeding up by 10% by @xusd320 in #1001
  • Optimize px2rem support for selector_black_list and selector_white_list by @LovePlayCode and @sorrycc in #1043
  • Enhance less loader implementation based on worker, increasing performance by 20% by @xusd320 in #1048
  • Optimize importInfo, delete unused specifier by @goo-yyh in #963
  • Optimize sourcemap file path, moving internal runtime code to mako_internal directory by @stormslowly in #1055
  • Optimize ast to code performance, execute concurrently in dev by @xusd320 in #1053
  • Refactor packages/mako into an entry package by @sorrycc in #1010
  • Refactor the implementation of @okamjs/okam, encapsulate less and other features by @sorrycc in #1024
  • Fix the implementation of concatenateModules, var ident conflict with root's top vars by @stormslowly in #1052
  • Fix the issue that dynamic_import_to_require must be executed after context_require by @sorrycc in #1038
  • Fix tree shaking support for multiple declarator declares by @stormslowly in #1032
  • Fix provider, change unresolved indent syntax context to top level after it's been declared by @stormslowly in #1027
  • Fix unwrap() panic in update phase by @sorrycc in #1004
  • Fix concatenateModule, treat module as external when it contains unsupported syntax by @stormslowly in #1009

0.4.9

2024-04-01

  • Fix issue where isolated chunks appear in chunk optimization by @Jinbao1001 in #988
  • Fix unstable entry chunk hash issue by @xusd320 in #1003
  • Fix concatenateModules unable to merge multiple external modules issue @stormslowly in #1005

0.4.8

2024-03-23

0.4.7

2024-03-22

  • Fix boundary scenario of fast refresh generating components inside functions by @sorrycc in #972
  • Fix scenario when referencing assets with query by @sorrycc in #975

0.4.6

2024-03-20

  • Fix resolve fragment issue, support scenario of a#b.ts by @sorrycc in #966

0.4.5

2024-03-20

  • Refactor part of the build code by @sorrycc in #923
  • Add HMR Fast Refresh support for anonymous functions scenario by @JackGuiYang12 in #947
  • Add inline_css configuration, implement style-loader like functionality by @sorrycc in #957
  • Optimize the use of rayon, allowing generate to reuse build stage's rayon threads by @xusd320 in #959
  • Enhance minifish inject feature, support include configuration item by @stormslowly in #930
  • Fix async chunk should not split root module by @PeachScript in #929
  • Fix css url() should support # prefix by @sorrycc in #949
  • Fix the implementation of async module by @stormslowly in #943
  • Fix the support for # fragment when resolving js and css dependencies by @sorrycc in #952
  • Fix support for non-ascii paths, such as spaces and Chinese characters by @sorrycc in #958
  • Fix ignored modules should be compiled into empty es modules by @xusd320 in #946
  • Fix in context module scenarios, async import should be split by @xusd320 in #940
  • Fix the stats information of sync chunk by @PeachScript in #928

0.4.4

2024-02-29

  • Fix issues where dynamic require/import in call_expr were not being correctly transformed by @PeachScript in #898
  • Compatibility with extraBabelPlugins: ['@emotion'] plugin configuration by @sorrycc in #908
  • Use more efficient memory allocators (mimalloc-rust, tikv-jemallocator), M1 Pro yuyanAssets build see a stable improvement of approximately 2500ms by @xusd320 in #912
  • Optimize the instantiation overhead of regular expressions in external features, M1 Pro yuyanAssets build see a stable improvement of approximately 3900ms by @PeachScript in #916
  • Pass the full stats compilation data when calling the onBuildComplete hook by @PeachScript in #917
  • Switch from nodejs-resolver to oxc_resolver by @xusd320 in #919

0.4.3

2024-02-01

0.4.2

2024-01-31

  • Fix the issue where lessLoader.modifyVars does not take effect in dev environment by @sorrycc in #900
  • Fix the OS error 35 caused by node binding due to mismatched stout/stderr modes by @sorrycc in #901
  • Fix the bug where sideEffects configuration as relative paths in package.json led to incorrect sideEffects matching by @stormslowly in #902

0.4.1

2024-01-30

  • Add HMR support for debugging npm packages linked by @zhangpanweb in #864
  • Add support similar to raw-loader, enabled by adding a ?raw query by @ctts in #877
  • Add cjs output configuration by @sorrycc in #886
  • Add preload support for async script by @PeachScript in #895
  • Add emit_assets and css_modules_export_only_locales configuration by @sorrycc in #890
  • Upgrade swc to 86 by @goo-yyh in #876
  • Improve support for dirname and filename in node scenarios by @zhangpanweb in #885
  • Optimize code splitting support in platform: node scenarios by @sorrycc in #887
  • Optimize the method of checking if variables are declared to improve speed by @zhangpanweb in #897
  • Optimize stats information, add siblings and origins information by @PeachScript in #893
  • Refactor the implementation of the emotion plugin by @zhangpanweb in #884

0.4.0

2024-01-18

  • Add new react configuration options, supporting different react runtime parameters by @sorrycc in #872
  • Add friendly prompts when there are errors in mako.config.json by @sorrycc in #875
  • Fix issue where HMR could not recover from file errors by @sorrycc in #863
  • Fix Less parameter value reading priority, first modifyVars field, then theme by @sorrycc in #874
  • Fix issue with style file import statements not being deleted by @stormslowly in #869
  • Fix the side effect of losing default import when optimizing skipModule @stormslowly in #862

0.3.1

2024-01-11

  • Fix the issue of product module ID annotations being unexpectedly cut off by glob expressions, causing runtime errors by @PeachScript in #856
  • Optimize built-in plugin hooks and exposed js hooks by @sorrycc in #855

0.2.3

2024-01-10

0.2.2

2024-01-09

  • Fix the undefined variable problem caused by using as multiple times for the same export in import/export statements by @stormslowly in #850
  • Fix the issue where missing dependencies on dev start up still cause build failure after being complemented by @zhangpanweb in #845
  • Fix the potential failure of parsing imported css in less files via relative paths by @sorrycc in #844
  • Optimize artifact generation, keep comments when not compressing for easier debugging by @sorrycc in #848
  • Optimize artifact generation, add ID comments to module declarations for easier debugging by @sorrycc in #849

0.2.1

2024-01-04

  • Fix issue where dependencies were mistakenly deleted when skipModules optimization was used with both import and require on the same module by @stormslowly in #842

0.2.0

2024-01-04

  • BREAK CHANGE: Adjust and merge configuration items by @PeachScript in #837
  • Optimize optimizePackageImports feature, support caching, export *, and deep bucket files by @sorrycc in #810
  • Optimize tree shaking, implement skip modules to further reduce artifact size by @stormslowly in #807
  • Optimize stats, add entry information by @PeachScript in #823 #829
  • Fix a piece of ES5 incompatible code in runtime in #830
  • Fix the issue of cjs modules being inserted with esm helpers turning them into esm modules by @stormslowly in #831
  • Fix handling of default export in optimizePackageImports by @zhangpanweb in #832
  • Optimize performance issue of skip modules by @stormslowly in #826
  • Optimize a minor performance detail by @stormslowly in #835

0.1.15

2023-12-18

  • Add support for displaying less code sourcemap by @jiesia in #755
  • Fix issue where require context doesn't support suffix require by @PeachScript in #806
  • Fix duplicate modules issue in entry chunk and vendor chunk by @PeachScript in #809
  • Fix the problem of missing dynamic reference modules after enabling dynamicImportToRequire by @stormslowly in #811

0.1.14

2023-12-18

  • Optimize chunk cache to not use cache by default when building by @zhangpanweb in #800
  • Fix the potential failure of loading chunks after the build caused by the hashed id strategy by @PeachScript in #805
  • Fix error handling when require fails under try statement, and no error is reported on the command line in dev by @sorrycc in #803
  • Fix that react refresh runtime code should not appear in HMR scenario with platform:node by @sorrycc in #802
  • Fix the issue where the output is empty when devtool is none by @zhangpanweb in #801
  • Fix the potential failure of loading non-entry chunks by @PeachScript in #798
  • Refactor chunks collection algorithm to avoid potential stack overflow problems by @PeachScript in #799

0.1.12

2023-12-14

  • Add support for shared chunk with multiple entries by @PeachScript in #789
  • Fix the issue where SWC Helper fails to inject when module_id_strategy is hashed by @sorrycc in #797
  • Fix the potential deadlock when optimizing chunk during HMR by @PeachScript in #795

0.1.11

2023-12-14

  • Fix the issue where CSS hot update fails when runtimePublicPath is enabled and its final value includes origin by @PeachScript in #768
  • Fix the compilation failure when requiring dynamic directories with pseudo suffixes by @PeachScript in #778
  • Fix the potential loss of chunks when CSS file contents are identical by @stormslowly in #781

  • Optimize the size of runtime, generate capabilities on demand by @sorrycc in #767

  • Optimize chunk load and registration logic, support non-entry chunks loading before entry chunks by @PeachScript in #783

0.1.10

2023-12-08

  • Adjust swc related dependencies to switch to swc_core by @goo-yyh in #765
  • Adjust tree-shaking to add judgment on side effects of variable declaration statements by @stormslowly in #763
  • Fix node binding TypeScript definitions by @stormslowly in #761

0.1.9

2023-12-07

  • Add support for dynamic strings in require, such as require('./i18n' + lang) by @PeachScript in #747
  • Adjust tree-shaking, optimize handling of side effects by @stormslowly in #725
  • Refactor watch, dev, and update logic, add debounce to support git checkout triggering multiple modifications at once by @sorrycc in #744
  • Fix the issue where import() with empty content causes panic errors by @sorrycc in #743
  • Fix the issue where require(css_file) is processed as css modules by @sorrycc in #751
  • Fix the issue where the node patch scheme does not support class fs/promise references by @sorrycc in #746
  • Fix the issue where dynamically loaded CSS via import() does not take effect by @jiesia in #756
  • Fix the issue where the worker doesn't support dynamically loading with import() by @jiesia in #755
  • Fix the occasional occurrence of process undefined during HMR by @sorrycc in #741
  • Fix external configuration format judgment logic by @PeachScript in #735

  • Fixed Minifish's inject function to support configuration of preferRequire and the order of inserted code based on the appearance order of the insertion variables by @stormslowly in #731 #734

0.1.5

2023-11-28

  • Added flexBugs configuration option, and it's enabled by default in the umi scenario by @PeachScript in #728
  • Fixed the dts issue of the okam node package by @stormslowly in #726

0.1.3

2023-11-27

  • Fixed an issue where merging into the common async chunk caused a data error in generating ensure statements, leading to loading failure by @PeachScript in #712
  • Fixed the issue that require.loadScript was not replaced with __mako__require__ by @stormslowly in #715
  • Added dts for the node api by @stormslowly in #716

0.1.0

2023-11-23

  • Added Emotion support by @zhangpanweb in #694
  • Improved performance of generating chunks, stable improvements of about 200ms in m1 yuyanAssets build by @sorrycc in #709
  • Improved performance of the generate phase transform, reducing the time cost from 3431ms to 1019ms in m1 yuyanAssets by @sorrycc in #707
  • Fixed the issue that window.require should not be replaced with window.__mako_require__ by @jiesia in #708
  • Fixed the issue of not handling errors in the child process when transforming_in_generate was multi-threaded by @sorrycc in #710
  • Captured more unsupported loader syntaxes, such as file-loader?esModule=false!./src-noconflict/theme-kr_theme.js by @sorrycc in #704