我们的项目当中遇到这样的需求:
开发环境, 要使用纯 CSS 代码, 通过 HTML link 标签加载
部署环境, 要用 autoprefixer 处理过的 CSS, 并且用 ExtractTextPlugin 分离出 CSS 文件
这样的目的, 开发时使用 Chrome Workspace 调试, 部署的时候 CSS 可以独立加载
因为 HTML 可以是服务端渲染的, 所以 CSS 独立加载呆着页面渲染更好一些
折腾了半天, ExtractTextPlugin 总是有问题, 不过后来很奇怪还是搞定了
http://ui.talk.ai/coffee-webpack-starter/
是这样一串代码:
{test: /\.less$/, loader: 'style!css!less'}
{test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css!autoprefixer')}
完整的配置在 GitHub 上可以看到:
https://github.com/teambition/coffee-webpack-starter/blob/master/webpack.config.coffee#L25
问题是, ExtractTextPlugin 插件的运行原理是怎么, 几个参数我稍微改一下就好保存,
也不清楚报错的时候, 原因是什么?
ExtractTextPlugin.extract = function(before, loader, options) {
if(typeof loader === "string") {
return [
ExtractTextPlugin.loader(mergeOptions({omit: before.split("!").length, extract: true, remove: true}, options)),
before,
loader
].join("!");
} else {
options = loader;
loader = before;
return [
ExtractTextPlugin.loader(mergeOptions({remove: true}, options)),
loader
].join("!");
}
};
https://github.com/webpack/extract-text-webpack-plugin/blob/master/index.js
有没有了解 loader 加载机制同学知道这中间的细节?