【问题标题】:How can I grab bunch of scss files and make one css file for all application如何获取一堆 scss 文件并为所有应用程序制作一个 css 文件
【发布时间】:2019-05-20 18:13:55
【问题描述】:

我有 webpack.config 并且不知道我需要在其中放置什么模块,因为我找到了模块,它只会最小化 css 或 scss 文件,但不会收集它们。

所以我有 8-9 个 scss 文件,并且需要一个 css 文件,该文件收集所有代码

var path = require('path');
module.exports = {
    entry: {
        home: './src/main/js/home/home.js',
        products: './src/main/js/products/products.js',
        product: './src/main/js/product/product.js',
        profile: './src/main/js/profile/profile.js',
        topics: './src/main/js/topics/topics.js',
        topic: './src/main/js/topic/topic.js',

    },
    cache: true,
    mode: 'development',
    output: {
        path: __dirname,
        filename: './src/main/resources/static/built/[name].bundle.js'

    },
    module: {
        rules: [
            {
                test: path.join(__dirname, '.'),
                exclude: /(node_modules)/,
                use: [{
                    loader: 'babel-loader',
                    options: {
                        presets: ["@babel/preset-env", "@babel/preset-react"]
                    }
                }]
            }
        ]
    }
};

我应该安装什么模块,以及我需要在 webpack.config 中放置代码的位置。请帮忙,我从未使用过 webpack!

var path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
    entry: {
        home: './src/main/js/home/home.js',
        products: './src/main/js/products/products.js',
        product: './src/main/js/product/product.js',
        profile: './src/main/js/profile/profile.js',
        topics: './src/main/js/topics/topics.js',
        topic: './src/main/js/topic/topic.js',
        _article: './src/main/resources/static/sass/_article.scss',
        _catalog: './src/main/resources/static/sass/_catalog.scss',
        _home: './src/main/resources/static/sass/_home.scss',
        _header: './src/main/resources/static/sass/_header.scss',
        _footer: './src/main/resources/static/sass/_footer.scss',

    },
    cache: true,
    mode: 'development',
    output: {
        path: __dirname,
        filename: './src/main/resources/static/built/[name].bundle.js'

    },
    module: {
        rules: [
            {
                test: [ /\.scss$/, path.join(__dirname, '.')],
                exclude: /(node_modules)/,
                use: ExtractTextPlugin.extract({
                    fallback: "style-loader",
                    use: ['css-loader', 'sass-loader']
                })[{
                    loader: 'babel-loader',
                    options: {
                        presets: ["@babel/preset-env", "@babel/preset-react"]
                    }
                }]
            }
        ]
    },
    plugins: [
        new ExtractTextPlugin("styles.css"),
    ]
};

那是我的 webpack.config

【问题讨论】:

    标签: css webpack sass gulp


    【解决方案1】:

    webpack 的工作方式与 gulp 不同。 Gulp 是一个任务运行器,可以使用globs 和文件模式。 Webpack 是一个捆绑器,它根据您的入口点分析依赖树,以便能够创建您的捆绑包。

    为了使用 webpack 并捆绑所有 scss 文件,需要从您的入口点导入它们。这是 webpack 知道这些文件存在的唯一方法。

    编辑:正确的配置。

    const path = require('path');
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    
    module.exports = {
        entry: {
            home: './src/main/js/home/home.js',
            products: './src/main/js/products/products.js',
            product: './src/main/js/product/product.js',
            profile: './src/main/js/profile/profile.js',
            topics: './src/main/js/topics/topics.js',
            topic: './src/main/js/topic/topic.js',
            _article: './src/main/resources/static/sass/_article.scss',
            _catalog: './src/main/resources/static/sass/_catalog.scss',
            _home: './src/main/resources/static/sass/_home.scss',
            _header: './src/main/resources/static/sass/_header.scss',
            _footer: './src/main/resources/static/sass/_footer.scss',
    
        },
        cache: true,
        mode: 'development',
        output: {
            path: __dirname,
            filename: './src/main/resources/static/built/[name].bundle.js'
        },
        module: {
            rules: [
                {
                    test: /\.scss$/,
                    use: [
                        MiniCssExtractPlugin.loader,
                        'css-loader',
                        'sass-loader'
                    ]
                },
                {
                    test: /\.js$/,
                    exclude: /(node_modules)/,
                    use: {
                        loader: 'babel-loader',
                        options: {
                            presets: ["@babel/preset-env", "@babel/preset-react"]
                        }
                    }
                }
            ]
        },
        plugins: [
            new MiniCssExtractPlugin()
        ]
    };
    

    【讨论】:

    • 所以我需要像js文件一样导入我所有的scss文件?
    • 已导入,那我需要做什么?添加一些插件?
    • 添加 css-loader、sass-loader。如果要将它们提取到 css 文件中,请添加 mini-css-extract-plugin
    • 已安装,没问题,但是spring-boot:run时出错
    • 一切……配置完全不正确。
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2021-01-24
    • 2016-01-11
    • 2014-09-26
    • 2014-10-17
    • 2011-11-10
    • 2014-08-05
    相关资源
    最近更新 更多