compiler文档:compiler 钩子
    compilation文档:Compilation Object

    manifest-webpack-plugin.js

    1. // Webpack每次打包结束后,自动产生一个打包文件清单,文件上记录文件名,文件数量等信息。
    2. module.exports = class ManifestWebpackPlugin {
    3. // constructor(options) {
    4. // console.log(options);
    5. // }
    6. apply(compiler) {
    7. // 在assets输出前,添加manifest清单
    8. compiler.hooks.emit.tapAsync("ManifestWebpackPlugin", (compilation, cb) => {
    9. const names = compilation.getAssets().map(item => item.name)
    10. const arr = [];
    11. arr.push(`文件的数量:${names.length}`)
    12. names.forEach(name => {
    13. arr.push(` ${name}`)
    14. })
    15. // 添加manifest清单
    16. const result = arr.join('\n')
    17. compilation.emitAsset('manifest.json', {
    18. source: function () {
    19. return result
    20. },
    21. size: function () {
    22. return result.length;
    23. },
    24. });
    25. cb();
    26. });
    27. }
    28. }

    使用,

    1. const manifestWebpackPlugin = require("./myPlugins/manifest-webpack-plugin");
    2. module.exports = {
    3. // ...
    4. plugins: [
    5. new manifestWebpackPlugin(),
    6. ],
    7. // ...
    8. }