2017-04-06 62 views
0

我刚刚写了第二个webpack loader。这次我查看了通过传递给require的查询参数接受参数。现在我的公共API看起来像这样(的CoffeeScript):变量是否可以作为参数传递给webpack加载器?

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

require调用传递的原始资产路径加上一些参数。正如参数指示的那样,它会调整它并将其转换为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的功能非常先进,但这一方面看起来很原始。

回答

0

Webpack静态分析您编译的CoffeeScript代码并寻找require调用。编译后的咖啡的代码看起来就像这样:

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

一般的WebPack创建一个背景下,当它看到一个参数require callsas described here但你可以看到它有没有在捆绑时间,所以它抛出一个猜你装载机参数的方式错误。

+0

我正在阅读的方式是,只有当变量引用系统中已有的东西的文件名时才有可能。然而,这里的参数并不是路径的一部分,所以我没有看到上下文模块是如何工作的。准确地说,就是最大@ –

+0

。我所说的是由于webpack的静态特性,因此你根本无法做到这一点 – HosseinAgha

相关问题