变量可以作为争论传递给webpack加载器吗?

时间:2017-04-06 03:35:03

标签: javascript webpack coffeescript

我刚刚编写了第二个webpack加载器。这次我通过传递给require的查询参数来研究接受参数。现在我的公共API看起来像这样(coffeescript):

asset_url = require "../assets/eyes.gif?resize=150x150&to_webm=true"

require调用是通过原始资产路径加上一些参数传递的。当params指示时,它会调整它并将其转换为webm,返回新路径。

问题是Webpack需要静态requires。即如果我将其更改为以下(再次,coffeescript):

params = "resize=150x150&to_webm=true"
asset_url = require "../assets/eyes.gif?#{params}"

然后webpack说Uncaught Error: Cannot find module "../assets"即使在我不使用变量时它完全正常。

那么,我的Webpack加载器是否仅限于这种传递参数的方式?虽然Webpack的功能非常先进,但这一方面似乎非常原始。

1 个答案:

答案 0 :(得分:0)

Webpack静态解析已编译的CoffeeScript代码并查找require次调用。您编译的咖啡代码将如下所示:

asset_url = require("../assets/eyes.gif?" + params)

通常,Webpack在require calls as described here中看到一个参数时会创建一个上下文,但正如您所看到的那样,它无法在捆绑时猜测您的加载器参数,因此会抛出错误。