Webpack 学习
什么是文本pack
从本质上讲,Webpack是一个现代Javascript应用的静态模块打包工具,它可以分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。
安装webpack
//全局安装 npm install -g webpack //安装到项目目录 npm install webpack --save-dev
webpack配置文件
const path = require(‘path‘) //_dirname 是 node.js 中的一个全局变量,它指向当前执行脚本所在的目录 module.exports={ entry: ‘./src/main.js‘, // 要打包的文件入口 output: { path: path.resolve(__dirname, ‘dist‘), //打包后的绝对输出路径 filename: "bundle-text.js", // 打包输出后的文件名 }, // 配置loader module: { rules: [ { test: /\.css$/, use: [‘style-loader‘,‘css-loader‘] //use使用多个loader时,要从右向左写 } ] } }
loader:
- 通过使用不同的loader,webpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理
- 比如说分析转换scss为css,或者把下一代的JS文件(ES6,ES7)转换为现代浏览器兼容的JS文件,对React的开发而言,合适的Loaders可以把React的中用到的JSX文件转换为JS文件
- Loaders需要单独安装并且需要在webpack.config.js中的modules关键字下进行配置。
test: 用来匹配loaders所处理文件的拓展名的正则表达式
loader:loader的名称
// 配置图片,在小于limit给出字节数以下的转化为base64,大于limit给出的字节数时通过file-loader模块加载,显示原图片 { test: /\.(png|jpe?g|gif|svg|cur)(\?.*)?$/, loader: ‘url-loader‘, options: { limit: 10000, name: ‘img/[name].[hash:8].[ext]‘//打包后图片命名 } }
当重新打包后,运行项目会出现图片路径错误。这时候就要在output下重新添加publicPath:‘/打包后图片存储路径‘
ES6语法处理
在webpack中直接使用babel对应的loader。,babel是一种javascript编译器,它可以javascript编译成可以执行的版本
rules: [ //js 匹配所有的js,用babel-loader转译 排除掉node_modules { test: /(\.jsx|\.js)$/, use: { loader: "babel-loader" }, exclude: /node_modules },