0

大家好,

我的项目中有很多结构非常复杂的 css 文件,因此我不得不在项目的根目录复制包含 css 文件的文件夹的结构。所以每次我保存一个 scss 文件时,grunt 必须检查我给他的每 160 多行配置。有没有办法优化这个配置?也许可以选择告诉 contrib-sass 用他所在的相同结构编译 scss 文件?

这是我的代码的简化示例:

   ...
       sass: {
          dist: {
            options: {
              style: 'expanded',
              sourcemap: 'none',
              trace: true,
            },
            files: {
              './css/laptop.css': './scss/css/laptop.scss',
             ....
             ... (160 more lines)
             ....
              './css/player.css': './scss/css/player.scss'
            }
          }
        },
    ...

谢谢!

4

2 回答 2

1

您可以使用 grunt.option 将参数传递给您的 Grunt 任务。看一看。您可以使用以下语法将参数传递给 grunt:

$grunt [task] myparam=myvalue

然后,从 gruntfile(或子文件)中的任何位置,您都可以这样做:

var myoption = grunt.option("myparam") || defaultvalue;

这样,您可以创建一个任务,仅编译一个 scss 文件,例如在参数中传递名称,或者即使该参数不存在也编译全部。

...
   var myoption = grunt.option("myparam") || defaultvalue;

   sass: {
      dist: {
        options: {
          style: 'expanded',
          sourcemap: 'none',
          trace: true,
        },
        files: {
         if ( myoption == defaultvalue ) {
           './css/laptop.css': './scss/css/laptop.scss',
           ....
           ... (160 more lines)
           ....
          './css/player.css': './scss/css/player.scss'
         } else {

         }
        }
      }
    },
...
于 2015-02-13T11:17:38.507 回答
1

经过一些研究,我发现可以这样使用 grunt-newer:

      css:{
        files: [
          './scss/**'
        ],
        tasks: ['newer:sass'],
        livereload: {
          options: { livereload: true },
          files: ['./**'],
        },
      }

这不是我想要做的,但它完美地优化了 grunt 过程。真的很不错的插件!!

于 2015-02-13T19:46:44.013 回答