【发布时间】:2015-12-28 19:25:46
【问题描述】:
我使用 redux-easy-boilerplate (https://github.com/anorudes/redux-easy-boilerplate/tree/master/src) 开始了一个 React 项目
我真的很喜欢样板中的每个组件都使用单独的本地 SCSS 文件进行样式设置。我实际上是在移植一个依赖 LESS 的旧应用程序,并且我想重用该应用程序的样式。
我试图在这个样板文件中直接用 LESS 替换 SCSS,但我遇到了一个我无法理解的问题。这是其中的一个典型组件:https://github.com/anorudes/redux-easy-boilerplate/tree/master/src/components/Footer。
它有一个 styles 目录,其中包含两个文件 - index.js:
import 'style!./styles.scss';
export default require('./styles.scss').locals.styles;
和styles.scss 这样的:
:local(.styles) {
text-align: center;
padding: 70px 0 40px;
...
}
如果我只是将 scss 文件重命名为 less,我会收到错误消息,指出无法获取未定义的属性“样式”(作为本地人),指向 index.js 的第二行。 我不太了解 SCSS,也不明白 scss 文件的第一行是做什么的,以及它的 LESS 等价物是什么。
顺便说一句,我确实将 LESS 加载器添加到 webpack 配置中:
{
test: /\.less$/,
loader: 'style!css!less',
},
【问题讨论】:
-
您是否为 Less 引入了合适的加载程序?您链接的存储库仅显示
.scss文件的加载器,而不是.less文件:github.com/anorudes/redux-easy-boilerplate/blob/master/webpack/… -
:local 是与 sass 相关的注释,是来自 CSS 模块的语法。那代表一个局部变量。在构建时 .styles 被替换为 .styles_somehash_ 以防止名称冲突等。按照@MichelleTilley 的说法检查您的加载器。我不知道是否有更少的加载器支持 CSS Modules....
-
@MichelleTilley 哦,是的,我确实将加载器添加到了 webpack
-
@JesúsQuintana 好点,我想我在某处读到你必须以某种方式同时执行 LESS 和 CSS 加载器
-
看起来您没有包含使本地部分工作的加载程序配置部分。我相信它应该和其他加载器一样,但是用less替换sass(即
css?localIdentName=[path]部分)