【发布时间】:2016-10-18 12:42:28
【问题描述】:
问题
是否可以通过别名之类的方式在请求中从 webpack 配置文件中指定加载器? 我正在寻找这个想法的实现:
webpack 配置
loaders: [
{ // loaderA - default
test: /\.js/,
loaders: ['loader-a1', 'loader-a2']
},
{ // loaderB - I want to enable this in require
test: /\.js/,
loaders: ['loader-b1', 'loader-b2']
}
]
用法
默认 - 将使用['loader-a1', 'loader-a2']
require('./module');
自定义 - 将使用 ['loader-b1', 'loader-b2']:禁用 loaderA 并启用 loaderB
require('!loaderB!./module');
已知解决方案
我的例子可以写成这样(但不是这样,为我回答):
weback 配置
loaders: [
{
test: /\.js/,
loaders: ['loader-a1', 'loader-a2']
}
]
用法
默认
require('./module');
自定义
require('!loader-b1!loader-b2!./module');
动机
1. 在 require 中创建加载器链可能很长而且很干燥。 这个需求有时可能真的很长
require('!loader-b1!loader-b2!loader-b3!loader-b4!./module');
2. 在 require 加载器中很难使用变量
在webpack.config.js 中创建变量可以轻松处理加载程序的不同用例。在内联require 中创建相同的案例很糟糕
weback 配置
loaders: [
{
test: /\.js/,
loaders: [
`loader-a1?${JSON.stringify({
sourceMap: DEBUG,
minimize: !DEBUG
})}`,
`loader-a2?${JSON.stringify({
sourceMap: DEBUG,
minimize: !DEBUG
})}`
]
}
]
用法
默认 - 在加载器中使用变量
require('./module');
自定义 - 在加载器中使用变量 - 它看起来很糟糕,您必须公开构建变量 DEBUG
require(`!loader-b1?${JSON.stringify({ sourceMap: DEBUG, minimize: !DEBUG })}!loader-b2?${JSON.stringify({ sourceMap: DEBUG, minimize: !DEBUG })}!./module`);
提示
我使用了别名这个词。
【问题讨论】:
-
您可以使用自定义扩展正则表达式。
/\.a.js$/
标签: javascript webpack