本文共 2706 字,大约阅读时间需要 9 分钟。
例:
配置告诉 Webpack 在遇到以 .css 结尾的文件时先使用 css-loader 读取 CSS 文件,再交给 style-loader 把 CSS 内容注入到 JavaScript 里
const path = require('path');module.exports = { // JavaScript 执行入口文件 entry: './main.js', output: { // 把所有依赖的模块合并输出到一个 bundle.js 文件 filename: 'bundle.js', // 输出文件都放到 dist 目录下 path: path.resolve(__dirname, './dist'), }, module: { rules: [ { // 用正则去匹配要用该 loader 转换的 CSS 文件 test: /\.css$/, use: ['style-loader', 'css-loader?minimize'], } ] }};
注意:
例:
ExtractTextPlugin 插件的作用是提取出 JavaScript 代码里的 CSS 到一个单独的文件。 对此你可以通过插件的 filename 属性,告诉插件输出的 CSS 文件名称是通过 [name]_[contenthash:8].css 字符串模版生成的,里面的 [name] 代表文件名称, [contenthash:8] 代表根据文件内容算出的8位 hash 值
const path = require('path');const ExtractTextPlugin = require('extract-text-webpack-plugin');module.exports = { // JavaScript 执行入口文件 entry: './main.js', output: { // 把所有依赖的模块合并输出到一个 bundle.js 文件 filename: 'bundle.js', // 把输出文件都放到 dist 目录下 path: path.resolve(__dirname, './dist'), }, module: { rules: [ { // 用正则去匹配要用该 loader 转换的 CSS 文件 test: /\.css$/, use: ExtractTextPlugin.extract({ // 转换 .css 文件需要使用的 Loader use: ['css-loader'], }), } ] }, plugins: [ new ExtractTextPlugin({ //通过 Plugin 把注入到 bundle.js 文件里的 CSS 提取到单独的文件中 // 从 .js 文件中提取出来的 .css 文件的名称 filename: `[name]_[contenthash:8].css`, }), ]};
Webpack 结合官方提供的开发工具 DevServer 可以做到以下三点:
DevServer 会启动一个 HTTP 服务器用于服务网页请求,同时会帮助启动 Webpack ,并接收 Webpack 发出的文件更变信号,通过 WebSocket 协议自动刷新网页做到实时预览。
Webpack 启动后会从 Entry 里配置的 Module 开始递归解析 Entry 依赖的所有 Module。 每找到一个 Module, 就会根据配置的 Loader 去找出对应的转换规则,对 Module 进行转换后,再解析出当前 Module 依赖的 Module。 这些模块会以 Entry 为单位进行分组,一个 Entry 和其所有依赖的 Module 被分到一个组也就是一个 Chunk。最后 Webpack 会把所有 Chunk 转换成文件输出。 在整个流程中 Webpack 会在恰当的时机执行 Plugin 里定义的逻辑。
转载地址:http://jzrgn.baihongyu.com/