1. 文档学习记录
安装webpack4
配置文件
wabpack.config.js (不指定文件时,默认使用)
webpack.config.dev.js
开发环境使用
webpack.config.build.js
生产环境使用
npm 启动命令
开发环境配置文件
mode (模式)
development -- 开发环境 会将 DefinePlugin 中 process.env.NODE_ENV 的值 设置为 development。启用 NamedChunksPlugin 和 NamedModulesPlugin。
productiom -- 生产环境 **(默认值)** 会将 DefinePlugin 中 process.env.NODE_ENV 的值设置为 production。启用 FlagDependencyUsagePlugin, FlagIncludedChunksPlugin, ModuleConcatenationPlugin, NoEmitOnErrorsPlugin, OccurrenceOrderPlugin, SideEffectsFlagPlugin 和 TerserPlugin。
none -- 不设置可以在npm启动命令中添加参数
退出任何默认优化选项
mode: development ```js module.exports = { + mode: 'development' - devtool: 'eval', - cache: true, - performance: { - hints: false - }, - output: { - pathinfo: true - }, - optimization: { - namedModules: true, - namedChunks: true, - nodeEnv: 'development', - flagIncludedChunks: false, - occurrenceOrder: false, - sideEffects: false, - usedExports: false, - concatenateModules: false, - splitChunks: { - hidePathInfo: false, - minSize: 10000, - maxAsyncRequests: Infinity, - maxInitialRequests: Infinity, - }, - noEmitOnErrors: false, - checkWasmTypes: false, - minimize: false, - }, - plugins: [ - new webpack.NamedModulesPlugin(), - new webpack.NamedChunksPlugin(), - new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("development") }), - ] } ```
mode: production ```js module.exports = { + mode: 'production', - performance: { - hints: 'warning' - }, - output: { - pathinfo: false - }, - optimization: { - namedModules: false, - namedChunks: false, - nodeEnv: 'production', - flagIncludedChunks: true, - occurrenceOrder: true, - sideEffects: true, - usedExports: true, - concatenateModules: true, - splitChunks: { - hidePathInfo: true, - minSize: 30000, - maxAsyncRequests: 5, - maxInitialRequests: 3, - }, - noEmitOnErrors: true, - checkWasmTypes: true, - minimize: true, - }, - plugins: [ - new TerserPlugin(/* ... */), - new webpack.DefinePlugin({ "process.env.NODE_ENV": JSON.stringify("production") }), - new webpack.optimize.ModuleConcatenationPlugin(), - new webpack.NoEmitOnErrorsPlugin() - ] } ```
mode: none ```js module.exports = { + mode: 'none', - performance: { - hints: false - }, - optimization: { - flagIncludedChunks: false, - occurrenceOrder: false, - sideEffects: false, - usedExports: false, - concatenateModules: false, - splitChunks: { - hidePathInfo: false, - minSize: 10000, - maxAsyncRequests: Infinity, - maxInitialRequests: Infinity, - }, - noEmitOnErrors: false, - checkWasmTypes: false, - minimize: false, - }, - plugins: [] }9910 ```
配置方法1
方法2
根据环境选择打包方式(配置文件)
entry (入口文件)
默认 -- ./src/index.js(不指定的情况下)
单入口
等价于
参数为数组时
向 entry 属性传入文件路径数组时,将创建出一个多主入口chunk。在需要要一次注入多个依赖文件,并且将它们的依赖导向到一个 chunk
多入口(对象语法)
entry:{[entryName:String]:String|Array}
多页面使用场景
推荐:一个HTML文档一个入口文件
output(输出配置)
控制 webpack 如何向硬盘写入编译文件。即使存在多个 entry 起点,但只指定一个 output 配置。
基本用法
filename:打包后的文件名 默认:main.js
path:打包后的路径 默认:./dist/
会在打包后的dist目录中生成bundle.js文件
占位符
[ext]:资源扩展名
[name]:资源的基本名称
[path]:资源相对于context的路径
[hash]:内容的哈希值
多入口时
使用文件名做占位符
高级用法
动态设置
resolve(解析)
配置模块如何解析。例如,当在 ES2015 中调用 import 'lodash',resolve 选项能够对 webpack 查找 'lodash' 的方式去做修改(查看模块)。
resolve.alias
创建 import或require别名
导入
resolve.modules
解析时搜索的目录
loader
css-loader与style-loader
加载CSS
install
使用
配置方法
1.configuration
module.rules 允许你在 webpack 配置中指定多个 loader。 这种方式是展示 loader 的一种简明方式,并且有助于使代码变得简洁和易于维护。同时让你对各个 loader 有个全局概览: loader 从右到左地取值(evaluate)/执行(execute)。在下面的示例中,从 sass-loader 开始执行,然后继续执行 css-loader,最后以 style-loader 为结束。查看 loader 功能 了解有关 loader 顺序的更多信息。
test: 用于标识出应该被对应的 loader 进行转换的某个或某些文件。
use: 表示进行转换时,应该使用哪个 loader。
```js
module.exports={
module:{
]
}
}
configuration(配置)
基本配置
常用详细配置(部分待完善))
Last updated