基础配置主要跟随官方文档记录一些自己对一些基础知识的理解。
了解基础配置的时候首先需要了解几个知识点:
Commonjs :nodejs的模块化规范,模块的导出和倒入。在使用webpack时候引入需要的插件的时候需要用到require语法。
_nodeJs的一些知识点: path内置模块,script脚本指令,_process.evn 环境变量。
下边以一个基础的webpack配置在使用时记录一下基础配置和上边提到的知识点。
const path = require("path");module.exports =(env,argv)=> {let config = {context:path.resolve(__dirname, ""),entry:"./src/main.js",},mode:"development"return config;}
1.module.exports :
上面提到的Commonjs的语法,导出一个模块。webpack本质上是一个工具类插件,作为使用的人需要根据
webpack提供的配置选项,配置出一份自己需要的打包流程,最后配置好的流程,通过module.exports 导出
webpack 根据导出的配置信息去打包。
导出的方式根据官方说明有 三种方式,分别为对象,函数,和一个Promise。比较常用的就是导出一个,
对象。上边代码所使用的是函数的方式导出,将写好的配置作为一个对象return出去。函数的方式导出
所带来的好处就是,在执行打包命令时可以通过打包的脚本命令 向配置文件传递参数。
下边是package.json文件中的脚本指令。
"scripts": {"build": "webpack --env.production --mode production","dev": "webpack-dev-server --mode development"},
可以看到第二行的 build 指令通过 — 的方式传入了参数,evn当前的环境对象,可以根据自己的需要去
定义环境对象内的属性,然后在 module.exports =(env,argv)=>{} 导出时 env 形参能根据传入的参数做
区分环境的打包判断。这里的argv 作为第二个参数是一个map对象。这个对象描述了传递给 webpack 的选项,
这里我把对象内的mode属性设置为production在打包时会按照内置默认的 production 配置去打包。这里
的mode 实际上和上面例子第六行的mode是同一个属性。都是设置打包模式,打包时传入导出函数的变量
会覆盖之前设置的mode。
2.path:
nodejs 的内置模块,这里例子的第四行 path.resolve(dirname, “”) ,dirname 是获取到当前目录的绝
对路径,第二个参数是一个字符串resolve方法会把他们拼接为一个完整的文件路径。这里使用__dirname
是因为考虑到不同的操作系统文件路径的写法不同保证兼容性。
3.context:
基础目录,绝对路径,官方(用于从配置中解析入口起点(entry point)和 loader)按照我的理解为,如果设置了这
个绝对路径,context 设置的目录作为在之后的webpack配置中相对路径的相对目录。上边设置为空,和不设置是
一样的使用当前目录为基础目录。
4.entry:
指定一个或者多个入口文件,这里的例子为一个入口文件。如果是多个可以为一个数组或者对象,具体可以查
看官方文档。入口文件实际上是webpack 打包的起点,webpack会根据入口文件的依赖引入深度递归所有的文
件,完成打包。还有一个动态入口,目前没有实践。
