我正试图围绕webpack的CommonsChunkPlugin的配置选项.这些选项包括布尔children属性.你能解释一下当设置为true时会发生什么,而不是设置为false时会发生什么?这个文档说"如果true公共块的所有子项都被选中",但页面从未定义"公共块的孩子".孩子们是否包含公共块?或者也许公共块的模块包括?此外,"选择"孩子的意义是什么?
精简版
当我在IE11中运行我的应用程序时,我Promise is undefined在manifest.js文件中收到错误说明.
如何在执行清单之前添加babel-polyfill或类似运行?
长版
我正在尝试将CommonsChunkPlugin添加到我的webpack配置中,以便将第三方(npm包)脚本拆分为单独的包.根据Webpack 2文档,我已经设置了" 组合隐式公共供应商块和清单文件 ",这在现代浏览器中运行良好.
我编写了一个函数来确保块以正确的顺序包含在我的索引文件中(见下文).
关于我的两个明确的切入点的一些背景知识:
script-loader.我希望随着时间的推移逐步淘汰这些另外两个(供应商和清单)是隐式的,并使用CommonsChunkPlugin创建.
当我用IE11运行时,我收到一个错误:Promise is undefined.这似乎是因为webpack表明自己正在调用new Promise().
在我的主要切入点我有import 'babel-polyfill';.在我添加供应商和清单分块之前,这使我能够克服IE缺乏Promise的问题.但是现在我首先加载了manifest.js,我无法弄清楚如何以正确的顺序包含它.
我的配置如下:
module.exports = {
entry: {
legacy_libs: './app/libs.js',
main: './app/main.js'
},
...
plugins: [
// Extract third party libraries into a separate vendor bundle.
// Also extract webpack manifest into its own bundle (to prevent vendor hash changing when …Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含大量代码的旧项目。这个项目使用 Webpack 3.8.1,我正在尝试更新到 4.4.1,这真是一个障碍!
\n\n主要的痛苦是项目使用 CommonsChunkPlugin:
\n\nnew CommonsChunkPlugin({\n name: \'common\',\n minChunks: 3,\n chunks: _.without(_.keys(entry), \'ace-iframe\', \'custom-theme-ace\'),\n}),\n\nnew CommonsChunkPlugin({\n name: \'vendors\',\n minChunks(module, count) {\n return isVendorModule(module) && count >= 2;\n },\n chunks: _.without(_.keys(entry), \'ace-iframe\', \'custom-theme-ace\'),\n})\nRun Code Online (Sandbox Code Playgroud)\n\n我知道Webpack 4不再提供CommonsChunkPlugin。非常感谢以下文章,它们节省了研究时间:
\n\n感谢这些令人惊叹的链接,我用以下几行替换了 CommonsChunkPlugin:
\n\noptimization: {\n splitChunks: {\n cacheGroups: {\n vendors: {\n priority: 50,\n name: \'vendors\',\n chunks: \'async\',\n reuseExistingChunk: true,\n minChunks: 2,\n enforce: true,\n test: /node_modules/,\n },\n\n common: {\n name: \'common\',\n priority: 10,\n chunks: \'async\',\n reuseExistingChunk: …Run Code Online (Sandbox Code Playgroud) 我有不同的反应应用程序的不同 gits。每个应用程序都应该使用相同的供应商块文件和外部包(React、ReactDOM ...)
Project 1 (git)
/dist/...
/src/...
webpack.config.js
Project 2 (git)
/dist/...
/src/...
webpack.config.js
Project N (git)
...
Run Code Online (Sandbox Code Playgroud)
每个都webpack.config.js包含此配置但具有不同的库名称:
module.exports = {
entry: {
app: './src/App.ts',
vendor: ['react', 'react-dom', 'react-redux', 'redux', 'redux-thunk']
},
output: {
path: path.resolve(__dirname, "dist"),
filename: '<Name>.bundle.js',
library: "<Name>",
libraryTarget: "umd"
},
module: { /* ... */ },
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: 'vendor.bundle.js'
})
]
}
Run Code Online (Sandbox Code Playgroud)
Webpackvendor.bundle.js专门为当前的库/项目构建了一个,而不是全局使用,是否有一个选项可以让 webpack 创建一个vendor.bundle.js可以包含在单个页面上的选项,其中两个应用程序都可以基于此文件加载:
<html>
<head>
<script src="/vendor.bundle.js"></script>
</head> …Run Code Online (Sandbox Code Playgroud) 我运行的命令:
$ webpack --config webpack.config.js -p --progress
Run Code Online (Sandbox Code Playgroud)
这是我得到的结果。什么chunks意思?为什么它们有时会改变?如果我理解正确,块越多越好。
但我看不到相同数量的文件。如果我在每个入口点都有 0-1-2 个块,那么块的文件在哪里?我只有入口点
我的 WP 配置:
module.exports = {
context: path.resolve(__dirname, '..'),
entry: {
index: 'index.wp',
home: 'home.wp',
vendors: [
'react',
'react-dom',
'querystring',
'react-router',
]
},
output: {
path: path.resolve(__dirname, '_distro_'),
publicPath: '/',
filename: '[name].[chunkhash:5].js',
pathinfo: true,
chunkFilename: 'chunk-[name].[chunkhash].js'
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
names: ["vendors", 'index', 'home'],
minChunks: 1 // << I play with this value and # of chunks change
}),
],
}
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序,我可以在其中添加模块作为node_modules.现在,这些模块和应用程序使用库XYZ作为节点模块.此外,这些模块还有其他节点模块,它们有自己的库XYZ作为节点模块.
我使用gulp和webpack,我正在尝试一些如何重复库XYZ.我想构建一个任务,通过这个嵌套的节点模块树,并构建1个通用版本的库XYZ.我怎样才能做到这一点?
我尝试使用deDupePlugin,这是我添加到我的gulp默认任务的所有内容,但它没有用.有什么我错过了吗?
plugins: [
new webpack.optimize.DedupePlugin()
// new CommonsChunkPlugin("commons", "commons.js")
],
Run Code Online (Sandbox Code Playgroud)
或者,还有其他方法可以实现吗?任何帮助将非常感激
webpack ×6
bundle ×1
dedupeplugin ×1
frontend ×1
git ×1
javascript ×1
performance ×1
reactjs ×1
web ×1
webpack-4 ×1