---恢复内容开始---
webpack主要处理新语法,但是浏览器不识别,用webpack前端工具,处理成浏览器认识的
添加webpack的依赖 npm init -y npm install webpack
处理指定的文件,并且指定输出文件的目录和名字
webpack .srcmain.js .distubdle.js
使用的时候
<script src="./dist/bundle.js"></script>
实现webpack热部署,使用webpack-dev-server,注意本地项目中必须安装webpack
需要配置文件
指定配置文件的名字,webpack.config.js
安装到工程开发依赖,使用的时候和webpack的命令是一样的。直接使用webpack-dev-server
注意是在项目中本地安装,所以不能当做脚本命令直接在命令行置直接执行,只能全局安装才能
在package.json配置脚本命令,scripts中设置,这样就可以直接命令行通过npm run dev执行webpack-dev-server
"dev" : "webpack-dev-server"
注意使用的时候安装webpack-dev-server到工程的本地目录
cnpm i webpack-dev-server -D
这种直接是工程的根目录,如果自己想访问打包后的bundle.js,直接访问 根目录/bundle.js
热部署使用的时候使用的是根目录下的bundle.js,打包生成的bundle.js没有存在物理磁盘中,在内存中托管
使用的时候直接
<scripts src="/bundle.js"></scripts>
所以配置文件中不需要output了。
webpack-dev-server的配置参数
自动打开浏览器的设置,还有指定端口3000,上来打开指定的目录src,加上--hot,局部更新,减少不必要重载,浏览器自动刷新
"dev" : "webpack-dev-server --open --port 3000 --contentBase src --hot"
还有一种直接在webpack.config.js中直接使用webpackServer配置
安装在内存中生成页面的插件
安装webpack插件
cnpm i html-webpack-plugin -D
htmlWebpackPlugin的插件:实现HTML文件加载到内存,自己处理bundle.js文件
const path = require('path') const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = { // 入口文件 entry: path.join(__dirname, './src/mian.js'), plugins: { new htmlWebpackPlugin({// template: path.join(__dirname,'./src/index.html'), filename: 'index.html' }) } }
解决css会发生二次ajax请求
直接导入样式,在main.js中
import './css/index.css'
需要这种方式,就需要安装style-loader 和css-loader
cnpm i style-loader css-loader -D
打开配置文件,新增配置节点新增配置节点modules,有个rules属性,是个数组,数组中存放所有第三方文件的匹配和处理规则
module: { //这个节点用于配置所有的第三方模块加载器 rules: [ //匹配规则 { test: /.css$/, use: ['style-loader', 'css-loader'] }, ] }
多个loader的时候调用的规则是从右到左的形式,就是先调用后面的loader
处理less文件.使用的时候的方式import './css/index.less'
安装插件
安装less
cnpm i less -D
安装加载器
cnpm i less-loader -D
module: { //这个节点用于配置所有的第三方模块加载器 rules: [ //匹配规则 { test: /.css$/, use: ['style-loader', 'css-loader'] }, //less配置的形式 {test: /.less$/, use: ['style-loader','css-loader','less-loader']}, ] }
处理scss文件
import './sass/index.sass'
cnpm i node-sass -D
cnpm i sass-loader -D
配置新的loader
module: { //这个节点用于配置所有的第三方模块加载器 rules: [ //匹配规则 { test: /.css$/, use: ['style-loader', 'css-loader'] }, //less配置的形式 {test: /.less$/, use: ['style-loader','css-loader','less-loader']}, {test: /.sass$/, use: ['style-loader','css-loader','sass-loader']}, ] }
webpack无法处理文件中的地址,无论是图片还是字体库,
需要第三方的loader
cnpm i file-loader
cnpm i url-loader
在配置文件中添加匹配规则
module: { //这个节点用于配置所有的第三方模块加载器 rules: [ //匹配规则 { test: /.css$/, use: ['style-loader', 'css-loader'] }, //less配置的形式 {test: /.less$/, use: ['style-loader','css-loader','less-loader']}, {test: /.sass$/, use: ['style-loader','css-loader','sass-loader']}, {test: /.(jpg|png|bmp|jpeg)$/,use: 'url-loader?limit=7632&name=[name].[ext]'} ] }
绿色部分是指当图片大小小于指定大小就会转成base64编码的图片,否则就是专成真正的URL地址,地址也会变,主要是防止文件名字的重复,红色是指不修改名字和文件后缀,正常不设置
或者使用下面的形式,加上前缀hash值
{test: /.(jpg|png|bmp|jpeg)$/,use: 'url-loader?limit=7632&name=[hash:8]-[name].[ext]'}
页面上引用字体图标
安装cnpm i bootstrap -D
在main.js中直接import 'bootstrap/dist/css/bootstrap.css'
注意不写node_modules也行,前面不要加上/
使用url-loader处理样式文件
{test: /.(ttf|eot|woff|woff2)$/,use: 'url-loader'}
注意package.json是json文件,不能在里面写注释
---恢复内容结束---