Webpack2加载和解压LESS文件
Webpack2 loading and extracting LESS file
我正在尝试设置 Webpack2 来处理我的 LESS 文件并从中创建一个单独的 CSS。但是我一直收到错误消息。我无法找到概述该过程的 Webpack2 示例,因此不确定我遗漏了什么。
我的 Webpack 配置:
module.exports = {
entry: {
'public': [
'./src/client/styles/public.js'
]
},
output: {
...
},
module: {
{
test: /.*\.less$/,
loader: ExtractTextPlugin.extract({ loader: 'less-loader', fallbackLoader: 'style-loader' })
}
]
},
plugins: [
new ExtractTextPlugin({ filename: '[name].css', disable: false, allChunks: true })
]
}
public.js
文件(我也尝试将 less 文件直接传递给条目,结果相同):
require('style.less')
style.less
文件
a { color: red; }
错误:
ERROR in ./~/less-loader!./src/client/styles/style.less
Module parse failed: /node_modules/less-loader/index.js!/src/client/styles/style.less Unexpected token (1:2)
You may need an appropriate loader to handle this file type.
| a {
| color: red;
| }
从消息中可以看出,less loader 正在正确传递文件但中断了。我尝试了一个空白文件,但后来我得到:
TypeError: text.forEach is not a function
版本:
"extract-text-webpack-plugin": "^2.0.0-beta.4",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"style-loader": "^0.13.1",
"webpack": "^2.1.0-beta.25",
"webpack-dev-server": "^2.1.0-beta.5",
"yargs": "~3.5.4"
可能是什么问题?
您可能还需要使用额外的负载,例如样式加载器或 css 加载器。来自 Docs:
var css = require("!raw!less!./file.less");
// => returns compiled css code from file.less, resolves imports
var css = require("!css!less!./file.less");
// => returns compiled css code from file.less, resolves imports and url(...)s
less-loader只是把处理变成了CSS。然后 Webpack 需要知道如何在 CSS 被提取出来之前合并它。
好的..可以使用:
loader: ExtractTextPlugin.extract({
loader:[ 'css', 'less' ],
fallbackLoader: 'style-loader'
})
编辑 这是针对 Webpack v2 的 - 感谢@thelastshadow 对 Webpack 4 问题的注释 here.
我正在尝试设置 Webpack2 来处理我的 LESS 文件并从中创建一个单独的 CSS。但是我一直收到错误消息。我无法找到概述该过程的 Webpack2 示例,因此不确定我遗漏了什么。
我的 Webpack 配置:
module.exports = {
entry: {
'public': [
'./src/client/styles/public.js'
]
},
output: {
...
},
module: {
{
test: /.*\.less$/,
loader: ExtractTextPlugin.extract({ loader: 'less-loader', fallbackLoader: 'style-loader' })
}
]
},
plugins: [
new ExtractTextPlugin({ filename: '[name].css', disable: false, allChunks: true })
]
}
public.js
文件(我也尝试将 less 文件直接传递给条目,结果相同):
require('style.less')
style.less
文件
a { color: red; }
错误:
ERROR in ./~/less-loader!./src/client/styles/style.less
Module parse failed: /node_modules/less-loader/index.js!/src/client/styles/style.less Unexpected token (1:2)
You may need an appropriate loader to handle this file type.
| a {
| color: red;
| }
从消息中可以看出,less loader 正在正确传递文件但中断了。我尝试了一个空白文件,但后来我得到:
TypeError: text.forEach is not a function
版本:
"extract-text-webpack-plugin": "^2.0.0-beta.4",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"style-loader": "^0.13.1",
"webpack": "^2.1.0-beta.25",
"webpack-dev-server": "^2.1.0-beta.5",
"yargs": "~3.5.4"
可能是什么问题?
您可能还需要使用额外的负载,例如样式加载器或 css 加载器。来自 Docs:
var css = require("!raw!less!./file.less");
// => returns compiled css code from file.less, resolves imports
var css = require("!css!less!./file.less");
// => returns compiled css code from file.less, resolves imports and url(...)s
less-loader只是把处理变成了CSS。然后 Webpack 需要知道如何在 CSS 被提取出来之前合并它。
好的..可以使用:
loader: ExtractTextPlugin.extract({
loader:[ 'css', 'less' ],
fallbackLoader: 'style-loader'
})
编辑 这是针对 Webpack v2 的 - 感谢@thelastshadow 对 Webpack 4 问题的注释 here.