原稿:语雀 · 管理输出 · 原目录:Webpack › 官方指南学习 › 管理输出

本篇的代码使用 webpack doc:管理输出提供的 demo,准备的文件参考上述链接,可删除之前的 loader npm uninstall css-loader style-loader

本节旨在通过插件实现自动管理资源引入,而非手动 import

创建 src/paint.js 并修改 src/index.js 后更新 dist/index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
-    <title>管理资源</title>
+    <title>管理输出</title>
+    <script src="./print.bundle.js"></script>
  </head>
  <body>
-   <script src="bundle.js"></script>
+   <script src="./index.bundle.js"></script>
  </body>
</html>

修改配置,添加 print.js 作为新的入口起点,同时修改 output,动态地产生 bundle 名

const path = require("path");

module.exports = {
  entry: {
    index: "./src/index.js",
    print: "./src/print.js",
  },
  output: {
    filename: "[name].bundle.js",
    path: path.resolve(__dirname, "dist"),
  },
};

执行 build,此时生成 print.bundle.js 和 index.bundle.js 文件,打开 index.html,可以正常运行


使用 HtmlWebpackPlugin

以上在修改起点名称以及添加新入口后,我们手动修改了 index.html 使之匹配新生成的 bundle,通过 HtmlWebpackPlugin 插件可自动化更新:

安装 npm install –save-dev html-webpack-plugin,修改配置文件,添加插件

const path = require("path");
+ const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  entry: {/**/},
+  plugins: [
+    new HtmlWebpackPlugin({
+      title: "管理输出",
+    }),
+  ],
  output: {/**/},
};

执行 build,可以发现 /dist 下自动生成了一个 index.html,而生成的 bundle 已经自动添加在其中

image.png

清理 /dist 文件夹

image.png

由于遗留了之前的代码,/dist 文件夹很杂乱。webpack 将生成文件并放置在 /dist 文件夹中,但是它不会追踪哪些文件是实际在项目中用到的。通常比较推荐的做法是,在每次构建前清理 /dist 文件夹,这样只会生成用到的文件。通常使用 clean-webpack-plugin 插件:npm install --save-dev clean-webpack-plugin

在配置中引入

const path = require("path");const HtmlWebpackPlugin = require("html-webpack-plugin");+ const { CleanWebpackPlugin } = require("clean-webpack-plugin");module.exports = {  entry: {/**/},  plugins: [+      new CleanWebpackPlugin(),    /**/,  ],  output: {/**/},};

重新 build,则 dist 文件夹中无用文件被清理


manifest

manifest,名词意为货物清单

webpack 和 webpack 插件似乎“知道”应该生成哪些文件:webpack 通过 manifest,可以追踪所有模块到输出 bundle 之间的映射