簡體   English   中英

在Webpack插件中添加依賴項

[英]Add Dependency in Webpack Plugin

是否可以在Webpack插件中添加依賴項? 我正在生成使用模板的文件,當這些模板發生變化時,我會像webpack --watch一樣觸發另一個構建。

這是插件:

function BlahPlugin (options) { this.options = options; }

BlahPlugin.prototype.apply = function (compiler) {

  // This is the file that I'd like to "watch"
  var template = this.options.template;

  compiler.plugin('emit', function (compilation, callback) {
    var body = Object.keys(compilation.assets).join("\n");
    require("fs").readFile(template, "utf8", function (err, data) {
      var content = data.replace("{{body}}", body);
      compilation.assets["out.txt"] = {
        source: function () { return content; },
        size:   function () { return content.length; }
      };
      callback();
    });
  });
};

module.exports = BlahPlugin;

這取自這個完整的工作項目: https//gist.github.com/thatismatt/519d11b2c902791bb74b

如果運行./node_modules/.bin/webpack --watch並修改js文件,編譯會自動觸發並生成已編譯的js文件和out.txt(如BlahPlugin中所指定)。 但是如果你改變了tmpl.txt文件,那是在webpack配置中指定並在BlahPlugin中使用的,那么編譯就不會重新觸發。 (這是預期的)。 但這就是我想要發生的事情,我怎么能告訴Webpack“看”那個文件呢?

我通過添加以下內容來修復此問題:

compiler.plugin("emit", function (compilation, callback) {
  compilation.fileDependencies.push(path.join(compiler.context, template));
  // ...
});

我還更新了要點,所以你可以在那里看到完整的解決方法: https//gist.github.com/thatismatt/519d11b2c902791bb74b

注意:這有效,但它有點像黑客。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM