Ari*_*Ari 3 sass node.js webpack sass-loader webpack-file-loader
我是 nodejs 的新手,在尝试使用 sass 时遇到问题。
以下信息纯属虚构,但代表实际情况。
场景:
我有以下文件夹结构:
frontend/
- scss/
- style.scss
- main.js
webpack.config.js
Run Code Online (Sandbox Code Playgroud)
目标:
我想编译style.scss到style.css使用的WebPack并把它里面dist/frontend/css/的目录,所以应该得到的这条道路:dist/frontend/css/style.css与创建以下文件夹结构:
dist/
- frontend/
- scss/
- style.scs
- main.js
frontend/
- scss/
- style.scss
- main.js
webpack.config.js
Run Code Online (Sandbox Code Playgroud)
代码:
主文件
import `style from "./scss/style.scss";`
Run Code Online (Sandbox Code Playgroud)
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"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
结果:
我收到这条消息:
Module not found: Error: Can't resolve './scss/style.scss' in 'E:\project_name\frontend'
问题
为什么会这样?
实现目标的正确代码是什么?
正如消息所说,此路径无效:'./scss/style.scss'。定义路径时有错字。该文件夹应该是sass而不是scss.
以下配置将有助于实现问题中提到的目标:
module: {
rules: [
{
test: /\.(s*)css$/,
use: [
"style-loader/url",
{
loader: "file-loader",
options: {
name: "css/[name].css"
}
},
"sass-loader"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理类似于Mini CSS Extract Plugin,但在用于将多个文件转换为不同文件时不会.js为每个.css文件生成额外的文件。.scss.css
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |