【问题标题】:Writing a webpack loader - inject code once编写 webpack 加载器 - 一次注入代码
【发布时间】:2016-01-16 18:26:20
【问题描述】:

我正在尝试编写一个 webpack 加载器,其中一个要求是我需要在每个包中注入一次代码。

加载器中是否有办法检测我正在处理的模块是否是入口点?如果没有,是否有一种简单的方法可以为每个包注入一次代码?

【问题讨论】:

    标签: javascript node.js webpack


    【解决方案1】:

    您可以像正常注入代码一样注入代码。您的加载程序应该返回转换后的源代码,并要求您需要注入一次的代码。 Webpack 的文档涵盖了这一点,将这个公共代码称为加载器的运行时。 http://webpack.github.io/docs/how-to-write-a-loader.html#extract-common-code

    var loaderUtils = require('loader-utils');
    
    module.exports = function(content) {
      return "require(" +
        loaderUtils.stringifyRequest(this, "!" + require.resolve("./runtime")) +
        ");\n\n" +
        content;
    };

    【讨论】:

      【解决方案2】:

      这有用吗?

      module.exports = function (content) {
      
        if (this.options.entry == this.resourcePath)
          content = 'var newCode = 10;\r\n\r\n' + content;
      
        return content;
      
      };
      

      我只使用它在入口文件上注入代码。

      【讨论】:

        【解决方案3】:

        您不能在入口点上使用加载器(也不能依赖于入口点)。 所以如果你想通过加载器注入一些代码,你必须在每个入口点都需要它。

        【讨论】:

          猜你喜欢
          • 2016-12-14
          • 2021-02-04
          • 1970-01-01
          • 1970-01-01
          • 2017-12-26
          • 1970-01-01
          • 1970-01-01
          • 2021-10-12
          • 1970-01-01
          相关资源
          最近更新 更多