使用一个sass项目,将scss文件添加到差异项目中

时间:2018-01-12 15:55:40

标签: sass watch compass

我有几个项目和一个sass项目

projectOne
    sass
        config.rb
        projectOne.scss
projectTwo
    sass
        config.rb
        projectTwo.scss
projectSass
    custom
        projectOne
        projectTwo

以下变体的示例 所有项目都来自projectSass

如果我在项目中运行compass watch,我怎样才能添加到全局projectSass dinamicly只有一个文件

  1. 可以使用变量添加到项目projectOne.scss中 $ project:projectOne(其中projectOne == dirname),然后是if $project?但我不能在sass中获得dirname。对于这个变种,我写了上面的结构子文件夹
  2. 可以通过config.rb?从具有自定义的结构:projectOne:projectTwo。并且只添加一个导入,其中projectOne == projectName == dirname
  3. 可能是通过gulp?
  4. 可以通过罗盘编译。示例compass compile -exclude=dir but -include=projectname.scss

1 个答案:

答案 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