如何在React和Webpack中使用Sass-loader?

黑石4

我正在使用React 16,Webpack 3和Bootstrap 4 beta。

我正在尝试使用类似于以下内容将.scss文件加载到React中import styles from './styles/app.scss'目前我正在使用import style from 'style-loader!css-loader!sass-loader!applicationStyles';我想不再使用.js文件中的sass-loader。

改善我的webpack配置的任何帮助也将受到欢迎,因为那是一团糟...

这是我的webpack文件:

const webpack = require('webpack');
const path = require('path');
const envFile = require('node-env-file');
require('babel-polyfill');


process.env.NODE_ENV = process.env.NODE_ENV || 'development';

try {
  envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV + '.env'))
} catch (e) { }

module.exports = {
  entry: [
    'script-loader!jquery/dist/jquery.min.js',
    'babel-polyfill',
    'whatwg-fetch',
    './app/app.jsx',
  ],
  externals: {
    jQuery: 'jQuery'
  },
  plugins: [
    new webpack.ProvidePlugin({
      '$': 'jQuery',
      'jQuery': 'jQuery',
      'window.jQuery': 'jquery',
      Popper: ['popper.js', 'default'],
    }),
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
    new webpack.optimize.UglifyJsPlugin({ compressor: { warnings: false } }),
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV),
        API_KEY: JSON.stringify(process.env.API_KEY),
        API_DOMAIN: JSON.stringify(process.env.API_DOMAIN),
        API_FILE_DOMAIN: JSON.stringify(process.env.API_FILE_DOMAIN),
      }
    }),
  ],
  output: {
    path: path.join(__dirname, 'public'),
    filename: 'bundle.js',
    publicPath: '/'
  },
  resolve: {
    modules: [
      __dirname,
      'node_modules',
      './app/api',
      './app/constants',
    ],
    alias: {
      applicationStyles: 'app/styles/app.scss'
    },
    extensions: ['.js', '.jsx']
  },
  devServer: { historyApiFallback: { index: 'public/index.html' }, },
  module: {
    loaders: [
      {
        loader: 'babel-loader',
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/
      },
      // {
      //   loader: 'sass-loader',
      //   options: {
      //     includePaths: [ path.resolve(__dirname, './node_modules/bootstrap/scss')]
      //   },
      //   test: /\.scss?$/,
      // },
      {
        loader: 'css-loader',
        options: {
          includePaths: [path.resolve(__dirname, './node_modules/react-table/react-table.css')]
        },
        test: /\.css?$/,
      }
    ],
    // I tried this but it gave me an error
    // rules:[
    //   {
    //       test: /\.scss$/,
    //       use: [
    //         { loader: "style-loader" },
    //         { loader: "css-loader" },
    //         { loader: "sass-loader" }
    //       ]
    //    }
    // ],
  },
  devtool: process.env.NODE_ENV === 'production' ? undefined : 'eval-source-map'
};

这是我的App.jsx文件中的导入

import 'bootstrap'
import style from 'style-loader!css-loader!sass-loader!applicationStyles';
import 'style-loader!react-table/react-table.css';
黑石4

我向我的webpack添加了规则-见下文:

module: {
      rules: [
        {
          test: /\.jsx?$/,
          exclude: /node_modules/,
          use: { loader: 'babel-loader'}
        },
        { 
          test: /\.css?$/,
          use: [
            { loader: "style-loader" },
            { loader: "css-loader" },
          ]
        },
        {
          test: /\.scss$/,
          use: [
            { loader: "style-loader" },
            { loader: "css-loader" },
            { loader: "sass-loader" }
          ]
        },
      ]
    },

所以现在我可以做:

import style from 'applicationStyles';
import 'react-table/react-table.css';

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 sass @use 和 webpack sass-loader

如何在Angular中使用sass-loader?

如何在 HtmlWebpackPlugin 和 twig-loader 中使用变量?

vue-loader:如何在Webpack 4和vue-cli3中使用vue-loader v15

如何在 Gatsby JS 中使用自定义 Webpack Loader?

如何升级Sass-Loader

Vuetify-loader和markdown loader

如何使postcss-loader,postcss-cssnext和sass-loader在webpack中一起工作?

Webpack文件加载器和sass-loader

NuxtJS&SASS Loader-在生产中使用sass-loader(SCSS)进行构建

具有vue-loader和sass-loader的Webpack无法导入.scss文件

Webpack中带有sass-loader和postcss-loader的sourceMap

如何在 Nuxt 中设置 SASS/SCSS/sass-loader

Webpack 的 Sass Loader:如何获取 CSS 文件而不是内联样式?

带引导的Webpack Sass-loader

Webpack 2 sass-loader 意外字符“@”

Webpack sass-loader无效的CSS

Circular loader in react js

在React中实现loader

Loader 和 AsyncTask 的区别

如何在我的 Webpack sass-loader 配置中为 SCSS 指定资源根目录?

Webpack 3:使用sass-loader,ExtractTextPlugin不起作用

如何在sql loader中使用多个条件?

如何在sql-loader中使用解码?

如何在Node-Loader和本机插件中使用相对路径

如何在three.js中使用GLTF Loader?纹理和材质显示为黑色

如何使用当前Webpack配置从sass-loader获得有效的CSS?

如何在webpack中使用babel-loader选择性处理node_modules中的代码?

何时在您的webpack配置中使用url-loader?