如何编写Webpack插件以按需生成index.js文件?

时间:2015-12-26 18:51:31

标签: plugins code-generation webpack

总的来说,我想知道如何根据需要在Webpack插件中进行代码生成/制作。我想为那些在需要时不存在的文件生成内容。"

具体来说,我想要一个插件,当我需要一个目录时,会自动要求该目录中的所有文件(递归)。

例如,假设我们有目录结构:

  • FOO
    • bar.js
    • baz.js
  • main.js

main.js有:

var foo = require("./foo");
// ...

我希望webpack自动生成foo / index.js:

module.exports = {
  bar: require("./bar"),
  baz: require("./baz")
};

我已经阅读了大部分的webpack文档。 github.com/webpack/docs/wiki/How-to-write-a-plugin有一个生成资产的例子。但是,我无法找到如何按需生成资产的示例。它似乎应该是一个解析器,但解析器似乎只输出文件路径,而不是文件内容。

1 个答案:

答案 0 :(得分:1)

实际上是针对您的用例:

  

具体来说,我想要一个插件,当我需要一个目录时,会自动要求该目录中的所有文件(递归)。

你不需要一个插件。见How to load all files in a subdirectories using webpack without require statements

按需执行代码生成/制作 可以很容易地在JavaScript中完成,为什么你限制你的代码生成专门用于仅应用& #34; WebPack需要"

由于NodeJS本身将查找index.js,如果您需要 目录,您可以非常轻松生成任意导出:< / p>

//index.js generating dynamic exports
var time = new Date();

var dynamicExport = {
  staticFn : function() {
    console.log('Time is:', time);
  }
}

//dynamically create a function as a property in dynamicExport
//here you could add some file processing logic that is requiring stuff on demand and export it accordingly
dynamicExport['dyn' + time.getDay()] = function() {
  console.log('Take this Java!');
}

module.exports = dynamicExport;