如何为webpack创建一个通过函数公开所有源的加载器?

时间:2017-07-13 09:01:36

标签: javascript webpack

我希望有一个收集所有css来源的加载器,并允许我获取函数中的所有内容。像这样:

Webpack配置

module: {
  loaders: [
    {test: /\.css$/, loader: 'my-loader'}
  ]
}

JS文件A(foo.js

import './foo.css';

JS文件B(bar.js

import './bar.css';

JS文件C(app.js

import './app.css';
import getAllCSSContents from 'my-loader';

const css = getAllCSSContents();

其中getAllCSSContents将返回foo.cssbar.cssapp.css

中的所有CSS内容

1 个答案:

答案 0 :(得分:1)

这有点棘手,因为你想要制作的加载器需要知道所有CSS模块才能生成它需要返回的代码,使其成为有状态(加载器意味着是转换一个输入模块的纯函数)

您可以使用raw-loaderrequire.context来达到您想要的效果:

def cart(*iterables):
    out = ((e,) for e in iterables[0])
    for iterable in iterables[1:]:
        out = (lambda it=iterable: (e1 + (e2,) for e1 in out for e2 in it))()
    return out