安装
全局
npm install -g webpack webpack-cli
本地
npm install webpack webpack-cli -D
配置
npm init -y
“scripts”: {
“build”: “webpack –mode production”
},概念
webpack 是一个打包 (build) 工具,将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源
为什么要打包?
常规的(落后的)开发方式 =》 jQuery、css、html =》将文件交付给后端
MVVM 时代 一切皆可打包
webpack 将现代 js 开发中的各种新型技术,集合打包,打包前无法运行,如(js es6 module、stylus 等不支持浏览器直接执行,.hbs 模板编译,.vue )在目标容器上运行
一切静态资源 打包 =》目标项目
Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。
webpack 配置
根目录 webpack.congif.js
入口文件
entry: './src/index.js',
出口
1 | output: { |
- node api path 操作文件路径
- __dirname 系统级变量,当前文件绝对路径
1
2console.log(__dirname)
// d:\MXJS\webpack\try_webpack - path.resolve 路径拼接
1
2console.log(path.resolve(__dirname, 'dist'))
// d:\MXJS\webpack\try_webpack\dist
loader
通过使用不同的loader,webpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理,比如说分析转换scss为css,或者把下一代的JS文件(ES6,ES7)转换为现代浏览器兼容的JS文件,对React的开发而言,合适的Loaders可以把React的中用到的JSX文件转换为JS文件。
loader 让 webpack 能够去处理那些非 JavaScript 文件, loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块
1 | module: { |
对一个单独的 module 对象定义了 rules 属性,里面包含两个必须属性:test 和 use
安装css-loader less-loader style-loader less 后即可使用 less
文件依赖
在入口文件使用模块化方案引入文件,并按照引入顺序打包文件
plugins
- ExtractTextPlugin css 文件抽离
安装 extract-text-webpack-plugin
1 | // 抽离打包好的 (css) 文件,解决打包时 css 混入 js 的问题 |
1 | module: { |
$ yarn add extract-text-webpack-plugin@last -D
完成将生成 .css 文件
- html 打包
依据一个简单的index.html模板,生成一个自动引用你打包后的JS文件的新index.html
const HtmlWebpackPlugin = require('html-webpak-plugin')
1 | plugins: [ |
加入babel
$ yarn add babel-core babel-loader babel-preset-env -D
1 | rules: [ |
外部资源引用
$ yarn add file-loader -D
1 | { |
CopyWebpackPlugin
不需要经过编译可以直接运行使用的资源或文件,可以直接copy到运行文件夹new ExtractTextPlugin('[name].css'),
1 | { |
webpack-dev-server 启动本地 web 服务
1 | // 配置端口、url、数据 |
配置路径缩写(别名)
1 | // package.json |
lodash
Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
Lodash 的模块化方法 非常适用于:
遍历 array、object 和 string
对值进行操作和检测
创建符合功能的函数
lodash 作为工具,是很多组件会使用的,省去了到处 import
$ yarn add lodash -D
1 | _.map([1, 2, 3], item => item * 2) |