基本使用
什么是Webpack
中文:https://www.webpackjs.com/concepts/
github:https://github.com/webpack/webpack
webpack is a module bundler.(模块打包⼯工具)
Webpack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的⼀一些浏览器器不能直接运⾏的扩展语⾔(Scss, TypeScript等),并将其打包为合适的格式以供浏览器器使⽤用。
安装webpack
webpack-cli 可以帮助我们在命令行⾥使用npx ,webpack等相关指令
- cli :命令行界面(Command Line Interface for batch scripting)
全局 (不推荐)
全局安装的话,版本就固定了,因为webpack更新速度很快,如果在做某个项目固定了webpack版本,另一个项目是另外一个webpack,导致会很不方便
npm install webpack webpack-cli -g
webpack -v
npm uninstall webpack webpack-cli -g //卸载
局部安装 (推荐)
局部安装 就是你项目用的哪个版本就是哪个版本,项目之间互不影响
npm install webpack webpack-cli -D
安装指定版本
npm info webpack//查看webpack的历史发布信息
npm install webpack@x.xx webpack-cli -D
检查是否安装成功
- 局部安装:如果使用webpack -v,是找不到的,因为这条命令是指向全局安装的bin目录下去寻找的
- 但是没关系,node提供了一个npx命令,通过
npx webpack -v查看版本 - 也可以在当前项目找到.bin\webpack 来查看版本
PS D:\Files\前端项目\webpack\webpack-demo> npx webpack -v
4.42.1
PS D:\Files\前端项目\webpack\webpack-demo> .\node_modules\.bin\webpack -v
4.42.1
webpack 命令行常用命令
-
查看版本
npx webpack-v -
启动webpack,打包入口文件
npx webpack使用 npx webpack 我们并没有指定入口文件,它就会去找默认的入口文件
- 默认的入口文件就是src/index.js
指定入口文件打包: npx webpack index
webpack配置文件
- 零配置是很弱的,特定的需求,总是需要⾃己进行额外的配置
module.exports = {
entry: "./src/index.js",//默认的⼊口文件
output: "./dist/main.js"//默认的输出
};
-
当我们使⽤npx webpack,,表示的是使⽤webpack处理打 包,./src/index.js的⼊⼝模块。默认放在当前目录下的dist⽬目录,打包后的 模块名称是main.js,当然我们也可以修改
-
webpack有默认的配置⽂件,叫webpack.config.js,我们可以对这个⽂件 进行修改,进行个性化配置
-
默认的配置⽂件
npx webpack //执行命令后,webpack会找到默认的配置⽂件,并使⽤用执⾏ -
不使用默认的配置文件: webpack.config.js
npx webpack --config webpack.config.js //指定打包文件webpack.config.js- npx webpack webpack.config.js
- webpack.config.js文件来作为配置文件并执行
- npx webpack webpack.config.js
-
修改package.json scripts字段:有过vue react开发经验的同学 习惯使 ⽤npm run来启动,我们也可以修改下,原理就是模块局部安装会在 node_modules/.bin⽬目录下创建一个软链接。
环境区分
- webpack-merge :合并webpack配置
- webpack.common.js、webpack.dev.js、webpack.prod.js
- cross-env模块:可以跨平台设置的和使用环境变量(Node中的环境变量)的脚本
development(开发环境) 和 production(生产环境) 这两个环境下的构建目标存在着巨大差异。在开发环境中,我们需要:强大的 source map 和一个有着 live reloading(实时重新加载) 或 hot module replacement(热模块替换) 能力的 localhost server。而生产环境目标则转移至其他方面,关注点在于压缩 bundle、更轻量的 source map、资源优化等,通过这些优化方式改善加载时间
-
通常建议为每个环境编写彼此独立的 webpack 配置
-
判断当前环境:process.env是Nodejs提供的一个API,返回所有环境变量,那么如果想用process.env.NODE_ENV,就必须先设置其值才能用。
- cross-env库来设置当前环境变量
- 通常在package.json来进行设置
cli命令说明
文档:https://webpack.docschina.org/api/cli/#environment-options
- progress
查看 webpack 的编译进度,你可以使用
--progress
npx webpack --progress
- color
启用控制台颜色
npx webpack --color
- hot
启用 HMR 热更新
npx webpack --hot // 简写-h
- devtool
控制是否生成 source map,以及如何生成
npx webpack --devtool //简写-d