我是nodejs的新手,尝试在其上使用sass时遇到问题。
以下信息只是虚构的,但它代表了 实际情况。
场景:
我具有以下文件夹结构:
frontend/
- scss/
- style.scss
- main.js
webpack.config.js
目标:
我想使用webpack将style.scss
编译为style.css
并将其放入dist/frontend/css/
目录中,因此应生成以下路径:dist/frontend/css/style.css
并创建以下文件夹结构:
dist/
- frontend/
- scss/
- style.scs
- main.js
frontend/
- scss/
- style.scss
- main.js
webpack.config.js
代码:
main.js
import `style from "./scss/style.scss";`
webpack.config.js
module.exports = {
mode: "development",
entry: {
main: "./frontend/main.js"
},
output: {
path: path.join(__dirname, "/dist/frontend"),
publicPath: "/",
filename: "[name].js"
},
module: {
rules: [
{
test: /\.(s*)css$/,
use: [
{
loader: "file-loader",
options: {
name: "css/[name].[ext]"
}
},
"style-loader/url",
"css-loader?-url",
"sass-loader"
]
}
]
}
结果:
我收到此消息:
Module not found: Error: Can't resolve './scss/style.scss' in 'E:\project_name\frontend'
问题
为什么会这样?
实现目标的正确代码是什么?
答案 0 :(得分:0)
如消息所述,此路径无效:'./scss/style.scss'
。定义路径时有错别字。该文件夹应该是sass
而不是scss
。
以下配置将用于实现问题中提到的目标:
module: {
rules: [
{
test: /\.(s*)css$/,
use: [
"style-loader/url",
{
loader: "file-loader",
options: {
name: "css/[name].css"
}
},
"sass-loader"
]
}
]
}
它的工作方式类似于Mini CSS Extract Plugin
,但是当用于将多个.js
文件转换为不同的.css
文件时,不会为每个.scss
文件生成另外的.css
文件