安装sass, 建议用cnpm
cnpm install node-sass sass-loader -D
create-react-app 创建项目默认是没有配置文件的,所以你需要
npm run eject
// 之后会在当前目录有个 config文件夹
配置 webpack.config.dev.js,在 config/webpack.config.dev.js
搜索:rules 就能找到下面这些代码了,我已经注释了, 只要加入sass-loader 就好了
module: {
strictExportPresence: true,
rules: [
{
test: /\.(js|jsx)$/,
enforce: 'pre',
use: [
{
options: {
formatter: eslintFormatter,
eslintPath: require.resolve('eslint'),
},
loader: require.resolve('eslint-loader'),
},
],
include: paths.appSrc,
},
{
oneOf: [
{
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
loader: require.resolve('url-loader'),
options: {
limit: 10000,
name: 'static/media/[name].[hash:8].[ext]',
},
},
{
test: /\.(js|jsx)$/,
include: paths.appSrc,
loader: require.resolve('babel-loader'),
options: {
cacheDirectory: true,
},
},
{
test: /\.css$/,
use: [
require.resolve('style-loader'),
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
},
},
{
loader: require.resolve('postcss-loader'),
options: {
ident: 'postcss',
plugins: () => [
require('postcss-flexbugs-fixes'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
},
},
],
},
// ======================= 这里加入sass-loader Begin ================
{
test: /\.scss$/,
loaders: ['style-loader', 'css-loader', 'sass-loader'],
},
// ======================= 这里加入sass-loader End ================
{
exclude: [/\.js$/, /\.html$/, /\.json$/],
loader: require.resolve('file-loader'),
options: {
name: 'static/media/[name].[hash:8].[ext]',
},
},
],
},
],
},
注意了上面的是开发环境的, 生产环境也需要配置,生产环境配置文件在config/webpack.config.prod.js,配置跟开发环境一模一样,只要按照上述配置就行了。