Псевдонимы загрузчиков Webpack?
У меня довольно сложная настройка загрузчика для таблиц стилей:
{
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 modules на некоторых требованиях, сохраняя при этом остальную его часть такой же?
Может быть, что-то вроде загрузчика 'alias', например require('./foo.scss!my-scss-with-modules-flag-alias')
?
Единственное решение, которое я могу подумайте о том, чтобы написать загрузчик, который выполняет синтаксическое преобразование, чтобы встроить конфигурацию загрузчика в определенные вызовы require... но это хрупко и сложно.
2 ответа:
Загрузчик разрешений.здесь будет работать Элия. То есть.
resolveLoader: { alias: { 'with-modules': 'loader definition goes here', } }
Используя эту конфигурацию, вы можете сделать просто
require('with-modules!./foo.scss');
В вашем коде.
Загрузчик разрешения.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' } ] }