如何在Webpack中从导出中排除供应商模块peerDependencies
How to exclude vendor module peerDependencies from export in Webpack?
问题
在Webpack中导出捆绑包时,如何排除第三方模块的peerDependency?(不是第三方模块本身)
背景
我想在angular-material
框架之上创建一个具有自定义组件的UIkit。使用Webpack,我可以将定制的组件和有角度的材料捆绑到类似uikit.js
的东西中,然后稍后移植到其他应用程序。但是,我不想将angular
模块本身包含在这个uikit.js
中。
问题
Webpack似乎足够"聪明",注意到angular
模块是angular-material
模块的依赖项,因此会将angular
模块和angular-material
模块都导出到捆绑包中。可以使用config.externals: {'angular': 'angular'}
或new webpack.IgnorePlugin(/angular$/)
来排除应用程序中明确需要的angular
模块,但对于peerDependency(即angular-material
内部需要的模块),它仍然会包括它。
那么,我怎么能将这个依赖第三方的模块排除在出口之外呢?
示例:
// app.js
var angular = require('angular');
var material = require('angular-material');
// ... other application logic
// webpack.config.js
var webpack = require('webpack');
module.exports = {
entry: {
app: './app.js'
},
module: {
loaders: [
// some module loaders
]
},
// This only excludes the angular module require by the app, not the one require by the angular-material
externals: {'angular': 'angular'},
plugins: [
// This is the same as externals, only the one required by app.js would be excluded
new webpack.IgnorePlugin(/angular$/)
]
};
在webpack(版本4)配置中,我将供应商应用程序导出到供应商捆绑包和区块中,所有这些都是这样的:
entry: {
app: './app.js',
vendor: [ 'angular', 'angular-material', '...' ],
},
optimization: {
splitChunks: {
chunks: 'all',
}
},
基本上,这表明将选择哪些块进行优化,all
意味着即使在异步和非异步块之间也可以共享块。此外,如何构建模块以及如何处理依赖关系可以进一步优化块大小。
此外,您还可以提供一个函数,其返回值将指示是否包括每个区块:
module.exports = {
//...
optimization: {
splitChunks: {
chunks (chunk) {
// exclude `my-excluded-chunk`
return chunk.name !== 'my-excluded-chunk';
}
}
}
};
这里有一个链接到webpack,解释splitChunks插件。
相关文章:
- Sencha Touch构建-排除文件
- 如何为排除无穷大和NaN的数字声明Flow类型
- JS条件故障排除
- 什么's是连接供应商js文件的最佳方式
- 如何在Webpack中从导出中排除供应商模块peerDependencies
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- Yii2从js脚本的页面上添加来自供应商文件夹的图像、css、js文件
- 如何排除此正则表达式中的空白匹配项
- 使用Regex排除标签中的尾随点
- 如何排除对象'在$.toJSON之前或期间的s id属性
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 如何使用yyyymmdd格式在日期中添加n天,但排除周日
- Sails.js指定要从自动插入中排除的js文件
- 如何从应用于正文的css中排除特定的表单
- 对DataTable jquery进行排序,排除文本字段中的空白
- 正在获取排除特定子节点的节点的innerHTML
- 从嵌套对象属性中获取排除某个值的最高值
- 有没有一个插件可以从特定的页面/帖子中排除一些JavaScripts
- Grunt排除在生成过程中插入某些文件
- 非常奇怪的JS/jQuery行为-alert()包含/排除