{
test: /\.css$/,
include: [
path.resolve(__dirname, "app/styles"),
path.resolve(__dirname, "vendor/styles")
]
}
通过缩小模块的查找范围来减少查找时间
module.exports={
resolve:{
modules: [path.resolve(__dirname, "./node_modules")]
}
}
通过指定解析模块的搜索目录来屏蔽调module向上查找增加的的耗时
resolve: {
alias: {
"@": path.join(__dirname, "./pages"),
"@assets": path.resolve(__dirname, "../src/images/"),
},
},
通过使用别名(指明了目录/文件)来导入模块使得模块的递归解析时间缩短
此配置在用户导入模块不携带后缀时会根据配置项中的后缀进行匹配查找
// v5.25.1版本默认值
extensions: [".js", ".json"]
npm install --save-dev thread-loader
把这个 loader 放置在其他 loader 之前, 放置在这个 loader 之后的 loader 就会在一个单独的 worker 池(worker pool)中运行
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: path.resolve("src"),
use: [
"thread-loader",
"expensive-loader"
]
}
]
}
}
babel-loader 提供了 cacheDirectory 配置给 Babel 编译时给定的⽬录,并且将⽤于缓存加载器的结 果,但是这个设置默认是 false 关闭的状态,我们需要设置为 true ,这样 babel-loader 将使⽤默认的 缓存⽬录 。
webpack 3.x | babel-loader 8.x | babel 7.x
npm install babel-loader@8.0.0-beta.0 @babel/core @babel/preset-env webpack
webpack 3.x babel-loader 7.x | babel 6.x
npm install babel-loader babel-core babel-preset-env webpack
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
options: {
cacheDirectory: true
},
}
];
npm install terser-webpack-plugin --save-dev
const TerserPlugin = require('terser-webpack-plugin');
module.exports = {
optimization: {
minimizer: [
new TerserPlugin({
cache: true, // 开启缓存
parallel: true // 多线程
})
]
}
};
例如,从 CDN 引入 jQuery,而不是把它打包: index.html
<script
src="https://code.jquery.com/jquery-3.1.0.js"
integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk="
crossorigin="anonymous">
</script>
webpack.config.js
externals: {
jquery: 'jQuery'
}
依赖使用不变
import $ from 'jquery';
$('.my-element').animate(...);