为什么我的webpack配置无法观看scss
文件?
如果我将文件明确添加到entry
中,那么它将正常工作,并创建CSS文件。这是个好习惯吗?
/// <binding ProjectOpened='Watch - Development' />
"use strict";
const path = require('path');
const webpack = require('webpack');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
watch: true,
entry: {
app: './src/scripts/app.js',
People: './Views/People/Index.cshtml.js',
Service: './Views/Service/Index.cshtml.js',
sass: './src/sass/app.scss' // <- this should explicitly stated
},
plugins: [
new MiniCssExtractPlugin({
path: path.join(__dirname, '/wwwroot/css/'),
filename: 'app.css',
})
],
output: {
publicPath: "/js/",
path: path.join(__dirname, '/wwwroot/js/'),
filename: '[name].bundle.js'
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /(node_modules)/,
query: {
presets: ['es2015']
}
},
{
test: /\.ts$/,
exclude: /node_modules|vue\/src/,
loader: "ts-loader",
options: {
appendTsSuffixTo: [/\.vue$/]
}
},
{
test: /\.(sa|sc|c)ss$/,
use: [
MiniCssExtractPlugin.loader,
{ loader: 'css-loader', options: { url: false, sourceMap: true } },
{ loader: 'sass-loader', options: { sourceMap: true } }
]
},
{
test: /\.(png|jpg|gif)$/,
use: {
loader: 'url-loader',
options: {
limit: 8192
}
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
}
]
},
resolve: {
alias: {
vue: 'vue/dist/vue.js'
},
extensions: ['.js', '.vue']
}
};
答案 0 :(得分:2)
Webpack的观察者对scss
文件没有任何怨恨。
Webpack开始从dependency graph
中提到的所有文件中创建entry files
,然后从这些文件中的所有文件imported
,然后到下一个级别的所有imports
,来制作。 .....
Webpack watch
仅跟踪上述依赖关系图中的文件。
现在,您必须将文件导入依赖关系图中已存在的任何文件中。
如果您的scss
没有被依赖关系图中的任何文件导入,那么您必须将其添加为new entry file
,或者可以使用正在使用的IDE的任何插件进行监视scss
个文件,并在更改时将它们编译为css
。