2014-01-18 49 views
1

对不起,我所做的错误,我不是英国人。如何在别名任务中设置配置数据

我无法理解为什么我的代码无法正常工作(我不擅长JS)。我想根据我通过cli传递的参数手动设置项目文件夹。 Well..it是我的行动:

$ grunt --project=default 

我从Gruntfile.js废料:

grunt.initConfig({ 
    ... 
    sass: { 
    main: { 
     options: { 
     style: 'nested', 
     }, 
     files: [{ 
     expand: true, 
     cwd: '<%= path %>', 
     src: ['*.scss'], 
     dest: '<%= path %>', 
     ext: '.css' 
     }] 
    } 
    }, 

    watch: { 
    sass: { 
     files: '<%= path %>/**/*.scss', 
     tasks: ['sass'], 
     options: { 
     livereload: true, 
     }, 
    }, 
    }, 

    ... 
}); 

grunt.registerTask('default','', function() { 
    // Get project name 
    var project = grunt.option('project') || 'default'; 
    .... 
    if (project == 'default') { 
    grunt.config.set('path', '../server/www/webapp.com/css'); 
    } 
    ... 
    if (project && development && !production) { 
    grunt.task.run('watch:sass'); 
    } 
} 

任务运行,一切似乎是确定,例如,当我更改* .scss文件我设置了上述项目文件夹,watch任务确实正确地检测到变化,但sass任务输出什么(。然而,当我加path键内grunt.initConfg({});一切工作正常。

任何人可以帮助我吗?

回答

0

复制我给上https://github.com/gruntjs/grunt/issues/1032相同的答案...

这是因为手表任务,默认情况下,将在一个子进程的任务。所以你对grunt.config.set的调用只修改当前进程中的配置对象,而不是子进程。要从产卵任务中禁用手表,请使用spawn: false选项。

watch: { 
    sass: { 
    options: { spawn: false }, 
    files: '<%= path %>/**/*.scss', // perfect! 
    tasks: ['sass'], 
    }, 
}, 
+0

谢谢!在github上是我) –