gpt4 book ai didi

javascript - 如何为 import() 全局设置 webpackChunkName?

转载 作者:行者123 更新时间:2023-12-05 00:24:04 25 4
gpt4 key购买 nike

从 Webpack@3.0.0 开始,我们有了这个强大的功能,可以启用命名的 block 文件:

import(
/* webpackChunkName: "my-chunk-name" */
/* webpackMode: "lazy-once" */
'module'
);

但是,我现在有 40 个这样的导入,并且更改每个都有点麻烦。

有什么方法可以定义 webpackChunkNamewebpackMode全局所有 block ?

我在 webpack.config.js 中想象这样的事情:
output: {
filename: 'js/[name].js',
chunkFilename: 'js/[filename].js' // so that import('module') creates module.js
chunkMode: 'lazy-once' // so I can override default `lazy` option once and for all
}

最佳答案

Is there any way to define webpackChunkName and webpackMode globally for all chunks?


不,不是作为内置的 webpack 配置选项。您也许可以使用 SplitChunksPluginoptimization.splitChunks.cacheGroups适本地命名您的动态导入,但这只会涵盖 webpackChunkName .
您可以使用加载器来覆盖所有魔术注释。我创建了一个 loader to insert magic comments动态 import() .
它依赖于 RegExp查找动态导入和 replace 添加配置的魔术注释。
这是正在使用的正则表达式 ( regexr):
/(?<![\w.]|#!|\*[\s\w]*?|\/\/\s*|['"`][^)$]*)import\s*\((?!\s*\/\*)(?<path>\s*?['"`][^)]+['"`]\s*)\)(?!\s*?\*\/)/g
加载器可以这样使用:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'magic-comments-loader',
options: {
webpackChunkName: true,
webpackMode: 'lazy',
webpackIgnore: 'src/ignore/**/*.js',
webpackPrefetch: [
'src/prefetch/**/*.js',
'!src/prefetch/not/*.js'
]
}
}
}
]
}
您可以使用加载器 options进一步配置魔术注释,包括 overrides基于文件路径。查看 readme .已包含任何类型注释的动态导入将被忽略。
注意:您需要运行支持后向断言和正则表达式中命名捕获组的 Node.js 版本,所以 >= 10.3.0 .请参阅 node.green 上的支持表.

关于javascript - 如何为 import() 全局设置 webpackChunkName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44888785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com