webpack学习资料

mac2024-04-05  48

Loaders

module: { rules: [ { test: /\.txt$/, use: "raw-loader" } ] }

test:匹配规则 user:用的loader名字

plugins 作用于bundle文件的优化,资源管理和环境变量注入,作用于整个构建过程 plugins:[],放入插件

mode 用来指定当前的构建环境:production,development,none 默认production

解析es6 npm i @babel/core @babel/preset-env babel-loader -D 创建.babelrc

{ "presets": ["@babel/preset-env", "@babel/preset-react"]//所有babel }

webpack

module: { rules: [ { test: /.js$/,//所有js文件 use: "babel-loader" } ] }

解析css css-loader:加载.css文件转化成commonjs对象 style-loader:将样式通过

{ test: /.css$/, use: ["style-loader", "css-loader"]//先style再css因为webpack是从右到左 }

less less-loader

{ test: /.css$/, use: ["style-loader", "css-loader"]//先style再css因为webpack是从右到左 }

图片字体资源 file-loader

{ test: /.(jpg|png|gif)$/, use: ["file-loader"] }, { test: /.(woff|eot)$/, use: ["file-loader"] }

url-loader 对于小资源自动进行base64处理

{ test: /.(jpg|png|gif)$/, use: [{ loader:"url-loader", options:{ limit:10240 } }] }

文件监听 启动时加上 --watch 在配置文件中加入watch:true webpack 轮询判断文件的最后编辑时间是否变化,变化了会先缓存,等待aggregateTimeout后将所有改变的文件一起变化

watchOptions: { ignored: /node_modeles/, //不监听的文件 aggregateTimeout: 300, //缓存等待时间 poll: 1000 //默认每秒询问1000次 },

需要手动刷新

热更新 webpack-dev-server 不舒心浏览器 不输出文件,只是放在内存 用HotModuleReplacementPlugin插件

plugins: [new webpack.HotModuleReplacementPlugin()], devServer: { contentBase: "./dist", //服务目录 hot: true }, "dev": "webpack-dev-server --open"

webpack-dev-middleware 将webpack输出文件传输给服务器,适用于灵活的定制场景

文件指纹 文件后缀,用来做版本管理 图片: https://uploader.shimo.im/f/pdTGuOTJrYIwAKiB.png 用MiniCssExtractPlugin插件把style-loader中的css提取出来

new MiniCssExtractPlugin({ filename: `[name][contenthash:8].css` }) { test: /.css$/, use: [MiniCssExtractPlugin.loader, "css-loader"] }, { test: /.less$/, use: [MiniCssExtractPlugin.loader, "css-loader", "less- loader"] },

自动清理构建目录

const { CleanWebpackPlugin } = require("clean-webpack-plugin"); new CleanWebpackPlugin()

css增强 autoprefixer自动补齐css3前缀

{ test: /.less$/, use: [ MiniCssExtractPlugin.loader, "css-loader", "less-loader", { loader: "postcss-loader", options: { plugins: [new require("autoPrefixer")] } } ] },

css px自动转换成rem px2rem-loader 页面渲染时计算根元素font-size值 可以使用手淘的lib-flexible库

<script src="../node_modules/amfe-flexible/index.js"></script>

静态资源内联

js文件压缩

内置uglifyjs-webpack-plugin不需要配置 css OptimizeCssAssetsPlugin new OptimizeCssassetsWebpackPlugin({ assetNameRegExp: /\.css$/g, cssProcessor: require("cssnano") }), html html-webpack-plugin

最新回复(0)