我正在使用nodejs,electron和node-sass构建一个sass编译器。
将有一个配置文件将描述许多项目的一些“sass编译器”,用户将能够通过GUI激活和停用它们。
我使用“电子”来创建界面,并使用电子“ipcmain”按需启动编译器。
为了初始化编译器,我产生了一个包含整个编译器的子进程。
使用以下代码完成编译:
var result = this.sass.renderSync({
file: 'C:\\Users\\George\\Desktop\\css_compiler_tests\\test3\\scss\\style.scss',
outFile: 'C:\\Users\\George\\Desktop\\css_compiler_tests\\test3\\css\\style.css',
includePaths:[
'C:\\Users\\George\\Desktop\\css_compiler_tests\\test3\\scss\\',
'C:\\Users\\George\\Desktop\\css_compiler_tests\\test3\\scss\\foundation\\components\\'
]
});
我使用绝对路径执行编译,但文件是相对路径。
我运行我的程序/ gui并激活了编译器,我得到了一个CSS文件。
问题是缺少一些进口。
我的根文件夹位于'C:\ Users \ George \ Desktop \ css_compiler_tests \ test3 \'。
我尝试编译导入'scss_inculded-files.scss'的'scss \ style.scss'。
文件'scss_inculded-files'导入'scss \ foundation.scss',导入'scss \ foundation \ components'。
以下是一个例子:
/*scss\style.scss*/
@import "included-files";
/*scss\_inculded-files.scss*/
@import
"includes/fonts",
"includes/custom-colors",
"includes/foundation-custom-settings",
"foundation/settings",
"foundation";
/*scss\foundation.scss*/
@import
"foundation/components/grid",
"foundation/components/accordion";
缺少最后两次导入的内容。
最后我从命令行尝试并得到了同样的错误:
D:\mytests\nodejs\nodeSass> node_modules/.bin/node-sass C:\Users\George\Desktop\css_compiler_tests\test3\scss\style.scss -o C:\Users\George\Desktop\css_compiler_tests\test3\scss\ --include-path C:\Users\George\Desktop\css_compiler_tests\test3\scss\
有没有办法包含那些丢失的文件?
提前谢谢。
编辑1 经过一些实验,我发现Mixins就是问题所在。
假设我有这样的Mixin:
@mixin headline($size, $color: $base-color) {
color: $color;
font-size: $size;
}
如果我这样称呼它就完美编译:
h1 {
@include headline($color: blue, $size: 12px);
}
如果我不打电话,则不会编译。
我正在使用Foundation Zurb框架,我相信auto包含了mixins。