1、命令参数很多时,配置文件更灵活
webpack提供的cli/命令支持很多的参数
(cli是命令行界面的缩写),例如–mode,但命令很多的时候,我们会使用更加灵活的配置文件来控制webpack的行为
默认情况下,webpack会读取webpack.config.js文件作为配置文件
,但也可以通过CLI参数--config来指定某个配置文件
#修改webpack的配置文件
npx webpack --config xx.js
2、webpack配置文件中必须是commonjs规范
配置文件中通过CommonJS模块导出一个对象
(只能用commonjs标准,用es6模块化导出会报错!!!),对象中的各种属性对应不同的webpack配置
module.exports={
//必须用commonjs标准
}
问题:webpack支持多种模块化标准,为什么配置文件里只能用commonjs导出,而不能用es6标准导出?
答案:
- webpack支持多种模块化标准,指的是
开发时态构建依赖关系
的时候,无论使用commonjs/es6等标准的时候,都能识别 - 读取webpack的配置文件的内容是在打包的过程中读的,
打包的过程就是读取webpack配置文件内容 并 运行
,打包过程是在node环境里执行的,必须用commonjs - 读取配置文件后,就要构建依赖关系,构建依赖关系时不会运行 开发时态的代码
总结:1、webpack.config.js 里的代码是在编译的过程中运行的代码,运行环境是node环境,所以必须是commonjs 规范,2、而我们要打包的src下的源代码,在打包的过程中是不会运行
的,只是把代码内容读出来,来分析依赖关系,最终形成打包结果, 3、最终运行的是打包结果
import xx from './xx';
//这句话在打包的时候不会运行,只是webpack用来识别依赖的,而打包完后dist里的代码才会运行,dist里面没有模块化代码
注意:配置文件中的代码,必须是有效的node代码
打包过程中运行webpack.config.js,而src里的代码只是被读出来,不会被运行
3、基本配置
当命令行参数与配置文件中的配置出现冲突时,以命令行参数为准。
基本配置:
mode
:编译模式,字符串,取值为development或production,指定编译结果代码运行的环境,会影响webpack对编译结果代码格式的处理
entry
:入口,字符串,指定入口文件
output
:出口,对象
,指定编译结果文件