如何配置 webpack 在我的项目中使用 compass
How to configure webpack to use compass in my project
我是 webpack 的新手,我不知道如何在项目中使用 Compass(CSS 创作框架)。
有什么好的方法吗?
谢谢
你可以使用compass-mixins
var path = require('path');
module.exports = {
...
module: {
loaders: [
{
test: /\.scss$/,
loader: "style!css!sass?includePaths[]=" + path.resolve(__dirname, "./node_modules/compass-mixins/lib")
}
]
}
};
这是一个helpful webpack boilerplate
更新:
您可以使用 sass-resources-loader 将您的 SASS 资源 @import 到每个必需的 SASS 模块中。您永远不必在所有 sass 文件中导入资源。
module.exports = {
...,
module: {
loaders: [
...,
{
test: /\.scss$/,
loaders: [
'style',
'css',
'sass?outputStyle=expanded&includePaths[]=' + path.resolve(__dirname, './node_modules/compass-mixins/lib'),
'sass-resources'
]
}
]
},
sassResources: path.resolve(__dirname, './client/app/resources/stylesheets/base.scss')
@Ayman Jitan 回答的重要补充。
您必须在 styles.scss
文件的顶部添加这两行:
@import "compass"; // <--
@import "compass/functions"; // <--
.foo {
min-height: 100px;
background-color: #fff;
}
否则,您会发现 sass-loader
"Module build failed" 和 "No mixin" 错误。喜欢下面的
Module build failed:
undefined
^
No mixin named background
如果你只添加 @import "compass/functions";
(没有 @import "compass";
),你可能会得到这个错误(取决于你包含的 mixin,在我的例子中它是由 @include background(linear-gradient(white, #cccccc, #aaaaaa));
抛出的):
Module build failed:
undefined
^
Media query expression must begin with '('
由于 compass 是一半 ruby 一半 sass 的框架,compass-mixins 可能无法正确使用遗留的 scss 代码。
要在您的 webpack 配置中启用原始指南针,您应该使用:
使用 compass
选项。
module.exports = {
// ...
module: {
loaders: [
/* some other loaders */
{
test: /\.scss$/,
loader: 'style!css!ruby-sass?compass=1'
}
]
}
};
NB!: Compass is no longer supported
我是 webpack 的新手,我不知道如何在项目中使用 Compass(CSS 创作框架)。
有什么好的方法吗?
谢谢
你可以使用compass-mixins
var path = require('path');
module.exports = {
...
module: {
loaders: [
{
test: /\.scss$/,
loader: "style!css!sass?includePaths[]=" + path.resolve(__dirname, "./node_modules/compass-mixins/lib")
}
]
}
};
这是一个helpful webpack boilerplate
更新:
您可以使用 sass-resources-loader 将您的 SASS 资源 @import 到每个必需的 SASS 模块中。您永远不必在所有 sass 文件中导入资源。
module.exports = {
...,
module: {
loaders: [
...,
{
test: /\.scss$/,
loaders: [
'style',
'css',
'sass?outputStyle=expanded&includePaths[]=' + path.resolve(__dirname, './node_modules/compass-mixins/lib'),
'sass-resources'
]
}
]
},
sassResources: path.resolve(__dirname, './client/app/resources/stylesheets/base.scss')
@Ayman Jitan 回答的重要补充
您必须在 styles.scss
文件的顶部添加这两行:
@import "compass"; // <--
@import "compass/functions"; // <--
.foo {
min-height: 100px;
background-color: #fff;
}
否则,您会发现 sass-loader
"Module build failed" 和 "No mixin" 错误。喜欢下面的
Module build failed:
undefined
^
No mixin named background
如果你只添加 @import "compass/functions";
(没有 @import "compass";
),你可能会得到这个错误(取决于你包含的 mixin,在我的例子中它是由 @include background(linear-gradient(white, #cccccc, #aaaaaa));
抛出的):
Module build failed:
undefined
^
Media query expression must begin with '('
由于 compass 是一半 ruby 一半 sass 的框架,compass-mixins 可能无法正确使用遗留的 scss 代码。
要在您的 webpack 配置中启用原始指南针,您应该使用:
使用 compass
选项。
module.exports = {
// ...
module: {
loaders: [
/* some other loaders */
{
test: /\.scss$/,
loader: 'style!css!ruby-sass?compass=1'
}
]
}
};
NB!: Compass is no longer supported