Razzle: Tambahkan scss dan lebih sedikit plugin

Dibuat pada 8 Feb 2018  ·  15Komentar  ·  Sumber: jaredpalmer/razzle

Hacktoberfest stale

Komentar yang paling membantu

Saya melakukan perluasan ini di razzle.config.js

"use strict";

const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
  modify: (config, { target, dev }, webpack) => {

    const appConfig = Object.assign({}, config);

    // Setup SCSS
    if (target === "web") {

      appConfig.module.rules.push(
        {
          test: /\.(sa|sc|c)ss$/,
          use: [
            dev ? 'style-loader' : MiniCssExtractPlugin.loader,
            'css-loader',
            'sass-loader',
          ]
        }
      );

    }
    else {
      // On the server, we can just simply use css-loader to
      // deal with scss imports
      appConfig.module.rules.push({
        test: /\.(sa|sc|c)ss$/,
        use: "css-loader"
      });
    }

    return appConfig;
  }
};

Ketergantungan pengembang:

"devDependencies": {
    "css-loader": "^1.0.0",
    "mini-css-extract-plugin": "^0.4.1",
    "node-sass": "^4.9.2",
    "razzle": "^2.4.0",
    "sass-loader": "^7.1.0"
  }

Semua 15 komentar

ada berita tentang ini yang terintegrasi belum?

Saya melakukan perluasan ini di razzle.config.js

"use strict";

const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
  modify: (config, { target, dev }, webpack) => {

    const appConfig = Object.assign({}, config);

    // Setup SCSS
    if (target === "web") {

      appConfig.module.rules.push(
        {
          test: /\.(sa|sc|c)ss$/,
          use: [
            dev ? 'style-loader' : MiniCssExtractPlugin.loader,
            'css-loader',
            'sass-loader',
          ]
        }
      );

    }
    else {
      // On the server, we can just simply use css-loader to
      // deal with scss imports
      appConfig.module.rules.push({
        test: /\.(sa|sc|c)ss$/,
        use: "css-loader"
      });
    }

    return appConfig;
  }
};

Ketergantungan pengembang:

"devDependencies": {
    "css-loader": "^1.0.0",
    "mini-css-extract-plugin": "^0.4.1",
    "node-sass": "^4.9.2",
    "razzle": "^2.4.0",
    "sass-loader": "^7.1.0"
  }

Halo! Jadi inilah kesepakatannya, antara open source dan pekerjaan dan kehidupan sehari-hari saya dan apa yang tidak, saya memiliki banyak hal untuk dikelola, jadi saya menggunakan bot GitHub untuk mengotomatiskan beberapa hal di sana-sini. Bot GitHub khusus ini akan menandai ini sebagai basi karena tidak memiliki aktivitas baru-baru ini untuk sementara waktu. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi dalam beberapa hari. Jangan menganggap ini pribadi--serius--ini adalah tindakan yang sepenuhnya otomatis. Jika ini kesalahan, cukup beri komentar, DM saya, kirim pidgeon pembawa, atau sinyal asap.

@jaredpalmer Bisakah Anda menambahkan label Hacktoberfest?

ya

Ide bagus

Tentu saja, apa yang Anda maksud dengan plugin? Suka plugin resmi berikutnya?

Ada plugin resmi di direktori paket. Anda dapat melihat beberapa contoh di sana.

Saya akan membagikan versi integrasi scss saya juga, mungkin ini berguna untuk seseorang.

Saya pikir saya tidak perlu mendefinisikan ulang aturan css untuk scss jadi saya hanya membuat salinan yang asli dan menambahkan scss loader.

'use strict';

const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
const paths = require('razzle/config/paths');

const cssLoaderFinder = makeLoaderFinder('css-loader');
module.exports = {
    modify(baseConfig, {dev}, webpack) {
        /* make a copy of config */
        const config = Object.assign({}, baseConfig);

        const scssLoader = {
            loader: require.resolve('sass-loader'),
            options: {
                sourceMap: dev,
            },
        };

        // Copy base css rules and add scss support
        config.module.rules.filter(cssLoaderFinder).forEach(rule => {
            const isCssModuleRule = !rule.test.test('module.css');
            const scssExclude = [paths.appBuild];
            let scssTest = /\.s[ac]ss$/;
            if (isCssModuleRule) {
                scssTest = /\.module\.s[ac]ss$/;
            } else {
                scssExclude.push(/\.module\.s[ac]ss$/);
            }

            // Use default configs
            config.module.rules.push({
                test: scssTest,
                exclude: scssExclude,
                use: [
                    ...rule.use,
                    scssLoader,
                ]
            });
        });

        // adding ./src to module resolver so I can import modules with absolute paths
        config.resolve.modules.push('./src');

        return config;
    },
};

Saya akan membagikan versi integrasi scss saya juga, mungkin ini berguna untuk seseorang.

Saya pikir saya tidak perlu mendefinisikan ulang aturan css untuk scss jadi saya hanya membuat salinan yang asli dan menambahkan scss loader.

'use strict';

const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
const paths = require('razzle/config/paths');

const cssLoaderFinder = makeLoaderFinder('css-loader');
module.exports = {
    modify(baseConfig, {dev}, webpack) {
        /* make a copy of config */
        const config = Object.assign({}, baseConfig);

        const scssLoader = {
            loader: require.resolve('sass-loader'),
            options: {
                sourceMap: dev,
            },
        };

        // Copy base css rules and add scss support
        config.module.rules.filter(cssLoaderFinder).forEach(rule => {
            const isCssModuleRule = !rule.test.test('module.css');
            const scssExclude = [paths.appBuild];
            let scssTest = /\.s[ac]ss$/;
            if (isCssModuleRule) {
                scssTest = /\.module\.s[ac]ss$/;
            } else {
                scssExclude.push(/\.module\.s[ac]ss$/);
            }

            // Use default configs
            config.module.rules.push({
                test: scssTest,
                exclude: scssExclude,
                use: [
                    ...rule.use,
                    scssLoader,
                ]
            });
        });

        // adding ./src to module resolver so I can import modules with absolute paths
        config.resolve.modules.push('./src');

        return config;
    },
};

Hai, tolong devDependencies apa yang saya perlukan untuk menggunakan ini konfigurasi razzle Anda?. Anda gagal menyebutkannya

@Toyurc saya menggunakan [email protected] dan [email protected] .

Hai, apakah ada perbaikan cepat untuk membaca lebih sedikit?
saya mendapat

Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type.
> <strong i="7">@import</strong>

tidak peduli apa yang saya instal dll

Hai, apakah ada perbaikan cepat untuk membaca lebih sedikit?
saya mendapat

Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type.
> <strong i="8">@import</strong>

tidak peduli apa yang saya instal dll

Untuk konfigurasi .less mungkin terlihat seperti ini. Saya belum menggunakan lebih sedikit, hanya sass tetapi aturan umum harus tetap berlaku.

'use strict';

const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
const paths = require('razzle/config/paths');

const cssLoaderFinder = makeLoaderFinder('css-loader');
module.exports = {
    modify(baseConfig, {dev}, webpack) {
        /* make a copy of config */
        const config = Object.assign({}, baseConfig);

        const lessLoader = {
            loader: require.resolve('less-loader'),
            options: {
                sourceMap: dev,
            },
        };

        // Copy base css rules and add less support
        config.module.rules.filter(cssLoaderFinder).forEach(rule => {
            const isCssModuleRule = !rule.test.test('module.css');
            const lessExclude = [paths.appBuild];
            let lessTest = /\.less$/;
            if (isCssModuleRule) {
                lessTest = /\.module\.less$/;
            } else {
                lessExclude.push(/\.module\.less$/);
            }

            // Use default configs
            config.module.rules.push({
                test: lessTest,
                exclude: lessExclude,
                use: [
                    ...rule.use,
                    lessLoader,
                ]
            });
        });

        // adding ./src to module resolver so I can import modules with absolute paths
        config.resolve.modules.push('./src');

        return config;
    },
};

less-loader dan less perlu diinstal.

Saya hanya membaca sekilas beberapa masalah lama tentang scss yang saya yakini telah diselesaikan sekarang. Sepertinya tidak ada paket yang lebih sedikit saat ini, tetapi sekarang ada plugin scss fyi.

Paket scss sekarang diterbitkan di sini dan berfungsi dengan baik untuk saya.
https://www.npmjs.com/package/razzle-plugin-scss

Lihat contoh di sini:
https://github.com/jaredpalmer/razzle/tree/master/examples/with-scss

Keduanya ditambahkan di cabang berikutnya, tutup

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

piersolenski picture piersolenski  ·  4Komentar

gabimor picture gabimor  ·  3Komentar

dizzyn picture dizzyn  ·  3Komentar

sebmor picture sebmor  ·  4Komentar

Jayphen picture Jayphen  ·  4Komentar