Appearance
webpack5 学习
注意:
webpack5
使用html-webpack-plugin
时会报错The 'compilation' argument must be an instance of Compilation
,解决办法是把该插件的安装方法从npm i html-webpack-plugin -D
改为npm i html-webpack-plugin@next -D
修改 npm 下载速度慢,将下载地址改为淘宝的镜像
npm install jquery --registry=https://registry.npm.taobao.org
npm config set registry https://registry.npm.taobao.org
webpack5
使用webpack-dev-server
时,不能再使用npx webpack-dev-server
,启动开发服务器了,需要使用npx webpack server
来启动开发服务器
笔记
webpack
5 大核心:entry,output,loader,plugins,mode。安装
webpack
使用npm i webpack -g
进行全局安装,4+以上的版本还需要安装webpack-cli
,同样是使用npm i webpack-cli -g
进行安装。使用
webpack
使用webpack ./src/index.js -o ./build --mode=development
命令,在命令行中进行调用,意思是webpack
会以./src/index.js
为入口文件进行打包,打包后输出到./build
文件中,整体的打包环境是开发环境。 环境分为:开发环境和生产环境。二者的区别在于,生产环境进行代码的压缩。默认情况下,webpack
不能打包js/json
以外的文件类型。webpack.config.js
是webpack
的配置文件,能够方便的将之前的命令行,写成 js,便于打包的自定义。javascriptconst { resolve } = require('path'); // 调用nodejs 默认的方法,获取文件的绝对地址 module.exports={ entry:'', // 入口文件 output:{ filename:'', // 输出文件名 path: resolve(__dirname,'build'), // 输出地址 }, module:{ rules:[ // 详细的loader配置 { test:/\.css$/, // 正则匹配对应的文件类型 use:[ // 调用的loader进行处理,倒序,或者是从右往左 'style-loader', 'css-loader' ] } ] }, plugins:[ // 详细的plugins配置 ], mode:'development' }
webpack.config.js
中module
->rules
->use
的顺序use
中的 loader 采用倒序的结构,或者从又往左。javascriptuse: [ 'style-loader', 'css-loader', 'less-loader' ] use: ['style-loader','css-loader','less-loader']
意思是指,首先调用
less-loader
解析less
文件,再将解析后的css
文件变成commonjs
模块加载js
中,内容样式是字符串,最后style-loader
是创建style
标签,再将js
中的样式资源插入,添加到head
中生效。devServer
开发服务器 由于每次写了代码再打包,再刷新浏览器才能看到最后的效果,比较麻烦。所以可以使用webpack
提供的开发服务器devServer
,不同于 5 大核心,是在核心之后进行调用的。javascriptmodule.exports = { entry:'', output:{ filename:'', path:resolve(__dirname,''), }, module:{ rules:[ { test:/\.css$/, use:['style-loader','css-loader'] } ] }, plugins:[ new HtmlWebpackPlugins({ template:'' }) ], mode:'development', // --------------------------------------- devServer: { // 运行项目的目录 contentBase: resolve(__dirname, 'bulid'), // 启动gzip压缩 compress: true, // 端口号 port: 5050, // 自动打开浏览器 open: true } }
devServer
用于自动化编译,只会在内存中打包,不会进行输出,能够方便的进行开发, 启动devServer
的指令为: (webpack4
)npx webpack-dev-server
(webpack5
)npx webpack serve