我正在尝试获取webpack 4(通过一个大多数已经使用Vue CLI 3进行引导的项目来捆绑),以捆绑一个当前正在使用Sprockets / Rails资产管道+ Require.js的现有项目
背景
该项目有许多require
语句,如下所示:
require('css!./styles')
在当前的Rails应用程序上下文中,这实际上意味着一个文件styles.less
(请注意它是.less
),然后Sprockets负责确保{{1} }将会存在,这样当Require.js生成所有内容时,它甚至都不知道LESS文件是否存在。
我想要的
当webpack看到styles.css
时,它应该寻找一个名为require('css!./styles')
的文件,但是应该找到处理LESS文件的现有webpack规则。由于相关的配置(styles.less
)在这里,所以这不仅仅是一个插件:
config.module.rule('less')
我面临的问题:
{
// ...
module: {
rules: [
/* config.module.rule('less') */
{
test: /(\.less$)/,
oneOf: [
// ...
/* config.module.rule('less').oneOf('normal') */
{
use: [
/* config.module.rule('less').oneOf('normal').use('vue-style-loader') */
{
loader: 'vue-style-loader',
options: {
sourceMap: false,
shadowMode: false
}
},
/* config.module.rule('less').oneOf('normal').use('css-loader') */
{
loader: 'css-loader',
options: {
sourceMap: false,
importLoaders: 2
}
},
/* config.module.rule('less').oneOf('normal').use('postcss-loader') */
{
loader: 'postcss-loader',
options: {
sourceMap: false
}
},
/* config.module.rule('less').oneOf('normal').use('less-loader') */
{
loader: 'less-loader',
options: {
sourceMap: false
}
}
]
}
]
}
]
}
}
开头的地方应该调用上面的LESS规则?css!
开头时,如何重写所需的路径? css!
和require('css!./styles')
都应映射到require('css!./styles.css')
。可能相关: