6

我现在正在学习 CSS 模块,它们看起来可以解决很多问题。但是所有的文档都是基于 CSS 的,我想使用 SASS。

这可能吗?例如,我怎样才能使以下语句起作用?

.normal {
    composes: common;
    composes: primary from "../shared/colors.scss";
 }
4

2 回答 2

6

./scss/import.scss

.myImportClass {
    background-color: #f00
}

./scss/style.scss

.btn {
    padding: 20px;
    border: 1px solid #000;
}

.newBtn {
    composes: btn;
    composes: myImportClass from './import.scss';
    border: 5px solid #f00;
}

webpack.config.js 中的模块部分

module: {
    rules: [
        {
            test: /\.scss/,
            use: [
                {
                    loader:'style-loader'
                },
                {
                    loader: 'css-loader',
                    options: {
                        sourceMap: true,
                        modules: true,
                        localIdentName: '[name]__[local]__[hash:base64:5]'
                    }
                },
                {
                    loader: 'sass-loader'
                }
            ]
        }
    ]
}

你的 teststyle.js (ES6 / ES7):

import React from 'react';
import style from './scss/style.scss';

const TestStyle = () => {
    render() {
        return (<div>
               <button className={style.newBtn}>my button</button>
        </div>)
    }
}

default export TestStyle;

索引.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack CSS composes</title>
</head>
<body>
    <div id="app"></div>
</body>
</html>

入口点 app.js

import React from 'react';
import TestStyle from './teststyle';

React.render(
     <TestStyle />,
     document.getElementById('app')
);

// 更新

  • 将 webpack 配置转换为 webpack 3

  • 使 teststyle.js 成为无状态函数

于 2016-06-08T18:56:01.453 回答
0

这是css-loader的问题,尝试importLoaders: 1,css-loaderwebpack配置中添加选项(https://webpack.js.org/loaders/css-loader/#importloaders

{
    loader: "css-loader",
    options: {
      modules: true,
      importLoaders: 1,
    },
  }
于 2020-08-20T11:56:44.217 回答