我有几个项目和一个sass项目
projectOne
sass
config.rb
projectOne.scss
projectTwo
sass
config.rb
projectTwo.scss
projectSass
custom
projectOne
projectTwo
以下变体的示例 所有项目都来自projectSass
如果我在项目中运行compass watch
,我怎样才能添加到全局projectSass dinamicly只有一个文件
if $project
?但我不能在sass中获得dirname。对于这个变种,我写了上面的结构子文件夹compass compile -exclude=dir but -include=projectname.scss
答案 0 :(得分:0)
这是我通过gulp的解决方案。
gulp.task('compass', function () {
var path = require("path");
return gulp
.src(['projectSass', '!projectSass/custom/', 'projectSass/custom/' + path.basename(__dirname) + '.scss'])
.pipe($.compass({
project: __dirname,
watch: true,
config_file: 'config.rb',
css: path.basename(__dirname) + 'project/css',
sass: '/media/sass',
debug: true
}))
.pipe(gulp.dest('project/css'))
});
带结构文件夹
projectSass
custom
projectOne.scss
projectTwo.scss
可能是任何人都有更美丽的解决方案
第二个解决方案
在config.rb
中module Sass::Script::Functions
def dir_name()
project_name = Pathname.new(File.dirname(__FILE__)).basename.to_s
Sass::Script::String.new(project_name)
end
end
在scss中我们得到字符串project_name 但没有工作
@import dir_name(); # impossible in sass now
可能,但不是很好
if dir_name() == 'projectOne' {
@include projectOne;
第三方解决方案 我选择这个解决方案
sass --watch --load-path
https://stackoverflow.com/a/34227039/2742948