Webpack 加载器别名?
Webpack loader aliases?
我有一个相当复杂的样式表加载器设置:
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract("style",
"css?sourceMap&localIdentName=[path][name]__[local]__[hash:base64:5]!sass?outputStyle=expanded&" +
"includePaths[]=" + other stuff)
)
}
效果很好,但在某些情况下我想将 modules
选项添加到 css-loader,所以它看起来像这样:
require('./foo.scss!css?modules&sourceMap&localIdentName=[path][name]__[local]__[hash...');
但我不能到处都这样做。
我该如何配置才能在某些需求上启用 css-loader 模块标志,同时保持其余部分不变?
可能是加载器之类的东西 'alias',例如require('./foo.scss!my-scss-with-modules-flag-alias')
?
我能想到的唯一解决方案是编写一个加载器,该加载器执行语法转换以将加载器配置内联到某些 require 调用中……但这既脆弱又复杂。
resolveLoader.alias 将在这里工作。即
resolveLoader: {
alias: {
'with-modules': 'loader definition goes here',
}
}
使用这个配置你可以做到简单
require('with-modules!./foo.scss');
在您的代码处。
resolveLoader.alias 可能适用于给定的情况,因为您使用插件作为加载程序。
但是,如果您需要使用一系列加载器,它将无法工作。 (有一个功能请求:https://github.com/webpack/webpack/issues/2772)。
相反,您可以在 require 语句中向文件添加参数
var styles = require('./foo.scss?modules');
并创建一个新的加载程序规则:
module: {
loaders: [
...
{ test: /\.scss$/, loader: 'style!css!postcss!sass' },
{ test: /\.scss\?modules$/, loader: 'style!css?modules!postcss!sass' }
]
}
我有一个相当复杂的样式表加载器设置:
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract("style",
"css?sourceMap&localIdentName=[path][name]__[local]__[hash:base64:5]!sass?outputStyle=expanded&" +
"includePaths[]=" + other stuff)
)
}
效果很好,但在某些情况下我想将 modules
选项添加到 css-loader,所以它看起来像这样:
require('./foo.scss!css?modules&sourceMap&localIdentName=[path][name]__[local]__[hash...');
但我不能到处都这样做。
我该如何配置才能在某些需求上启用 css-loader 模块标志,同时保持其余部分不变?
可能是加载器之类的东西 'alias',例如require('./foo.scss!my-scss-with-modules-flag-alias')
?
我能想到的唯一解决方案是编写一个加载器,该加载器执行语法转换以将加载器配置内联到某些 require 调用中……但这既脆弱又复杂。
resolveLoader.alias 将在这里工作。即
resolveLoader: {
alias: {
'with-modules': 'loader definition goes here',
}
}
使用这个配置你可以做到简单
require('with-modules!./foo.scss');
在您的代码处。
resolveLoader.alias 可能适用于给定的情况,因为您使用插件作为加载程序。 但是,如果您需要使用一系列加载器,它将无法工作。 (有一个功能请求:https://github.com/webpack/webpack/issues/2772)。
相反,您可以在 require 语句中向文件添加参数
var styles = require('./foo.scss?modules');
并创建一个新的加载程序规则:
module: {
loaders: [
...
{ test: /\.scss$/, loader: 'style!css!postcss!sass' },
{ test: /\.scss\?modules$/, loader: 'style!css?modules!postcss!sass' }
]
}