webpack从零到一搭建vue项目
webpack是当下应用最大的构建工具,从0到1构建项目,是一个值得学习课题。不管是vue项目还是其他项目都离不开构建工具(可能是其他构建工具)。
webpack打包工具
1.安装webpack
webpack webpack-cli -D(4x,5X)
安装低版本,指定
```js
@3 安装3版本的最新版本1
2
3
4
5
6
7
- node-modules -> bin -> 软链接目录(-D)
- ```js
//锁死安装路径
npx webpack -V //npx 找项目下的软连接目录,有的话直接启动,如果没有则安装webpack到本地,并启动他
webpack -V //全局环境
定义名称
script{ }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
- webpack 0配置启动
- 配置webpack文件
- ```js
//根目录下新建 webpack.conifg.js
mudule export ={
//打包入口 默认 ./src/index.js
entry:'./sec.index.js'
//打包出口,文件路径
//打包模式
outPut:{
//为打包资源文件存在位置,必须为绝对路径
path:
filename:
//产出的资源文件名
}
//默认生产模式,默认启动js压缩优化
mode:'production',
//不开启模式匹配,不压缩
mode:none
}
//const {resolve,join} = require('path')
const path = require('path');
产出子文件的存放位置
path:path.resolve(_dirnamr,'./dist')
mode:producton
mode:development 开发模式。不会压缩代码,会暴露更多信息,方便调整。
mode:none
//模式警告--config 告诉启动哪一个配置权限
1
2
3
4
5
6
- webpack 支持import,不支持css,只支持js
```js
引入css,出错。
less pug vue jpe jpeg svgmodule :{ rules:[ { test:/|.css/, use:'', } { test:/\.less$/, use:['style-loader','css-loader','less-loader'] } ... ] }
1
2
3
4
5
6
7
8
##### loader 模编译器
css-loader css 挂载,
```js
默认装...5
降级 @..打包的css怎么用
css-loader 支持模块。style-loader触发效果
```js
style-loader: //操作dom动态创建
npm install style-loader@zm
当多个load作用于一个模块的时候,有执行顺序。从后往前1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- .less 采用less模块
- plugin插件
- mini-css-extract
- ```js
//引入插件
const minicss from
[name].[ext] 占位符
/\.(png|jpg|jpe?g|webp)$/
? 有或没有
以前写的工作室官网项目,本来能运行起来的,隔了很久之后,中间还重做了一次系统,今天重新运行竟然运行不起来了。
报错:
Matrix-official@1.0.0 dev: `webpack-dev-server –inline –progress –config
1 | 从网上找了一个解决方案: |
loader 模板转译 编译器
webpack 打包工具
1.安装
npm i webpack@4.43.0 webpack-cli@3.3.12 -D
-D <=> –save -dev
ps:webpack webpack-cli loader 非常重视版本兼容,版本不符合会导致打包失败
2.两种打包方式
在package.json的script中写
- ```js
“dev” : “webpack”,
//npm run dev 启动打包工具1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2. 直接npx webpack
3.默认打包
直接运行打包命令
默认会在根目录新建一个dist文件夹,把其他文件打包到里面的main.js文件里。默认能正确打包,js和json文件
4.打包less,css,sass,sass,png等等文件
需要安装loader工具,
```js
eg:
npm i less-loader -D
npm i css-loader -D
npm i mini-css-extract-plugin -D
npm i sass-loader -D
插件1//mini-css-extract-plugin 可以生成一个css文件,将css样式预编译并且存在一个指定的位置。
const minicss = require("mini-css-extract-plugin");
plugins: [
new minicss({
filename: "./my/b.css",
}),
],
//loader 模板转译 编译器
- ```js
插件1
mini-css-extract-plugin 可以生成一个css文件,将css样式预编译并且存在一个指定的位置。
loader使用
1 | module.exports = { |
插件2
打包后的文件,自动生成一个html文件。并且可以设置模板
Webpack 如何将打包后的文件,自动生成一个html文件
…html-webpack-plugin
…安装4-x版本
…1.npm 安装插件
…引入插件
…实例化对象
创建html模板
- ```js
template:”./src/index/.html”
//模板克隆目录
filename:”index.html”1
2
3
4
5
6
7
8
9
10
11
##### 保持文件夹清空(打包之前
##### 插件三.保持文件夹初始化。
- clean-webpack-plugin
- 引用
- ```js
const {} from {''}...
- ```js
解决js的兼容问题
语法(箭头函数)和特性(promise)
多入口应用
1 | entry:{ |
处理js 的打包,Babel-loader
安装依赖
babel-loader @babel/core -D
兼容性:知道目标浏览器集合
有一套工具链:主要将es6
ps:只能转语法,新特性只能profill
- 将其在js文件最上方引入
babel 预设 -> 做语法转换的part
- env 原生
- react react转换
- ts转换
- flow转换
1 | @babel/preset -env |
写babel-loader配置
1 | option:{ |
设置目标浏览器集合
package.json 中
1 | "browerslist":[ |
查看符合的版本(终端)
1 | npx browerslist "last 2 versions" |
profill
一个js库,内有es6新增所有的特性
在顶部安装polyfill
生产依赖 默认为生产模式安装
npm i @babel/polyfill
在js文件的第一行引入profill
1 | import "@babel/polyfill" |
按需导入 ->
webpack-dev-server
1.推荐3x版本
2.定义脚本
1 | "serve":"webpack-dev-server" |
3.配置在webpack.config.js
1 | devServer:{ |
定位bug位置
1 | devtool:"none" |
Vue
1.安装vue-loader vue-template-compiler
实例化: vue-loader-plugin
2.webpack….
3.vue-style-loader
vue 生产依赖