为什么我应该在入口Webpack配置中声明scss文件

时间:2018-08-03 03:52:07

标签: webpack sass config webpack-style-loader extracttextwebpackplugin

为什么我的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']
    }
};

1 个答案:

答案 0 :(得分:2)

Webpack的观察者对scss文件没有任何怨恨。

Webpack开始从dependency graph中提到的所有文件中创建entry files,然后从这些文件中的所有文件imported,然后到下一个级别的所有imports,来制作。 .....

Webpack watch仅跟踪上述依赖关系图中的文件。

现在,您必须将文件导入依赖关系图中已存在的任何文件中。

如果您的scss没有被依赖关系图中的任何文件导入,那么您必须将其添加为new entry file,或者可以使用正在使用的IDE的任何插件进行监视scss个文件,并在更改时将它们编译为css