2016-02-02 50 views
1

使用Grunt对我来说非常新鲜。我使用grunt-contrib-watch和这个崇高的包sublime-gruntGrunt kill watch session&在grunt文件名中使用变量

  1. 我正在使用sublime-grunt包来启动观看会话并使用Chrome扩展程序进行livereload。一切都很好,但是一旦开始“观看”会话,什么是停止/杀死/取消手表的命令。我尝试在名为'Grunt Kill Running Processes'的sublime-grunt包中使用命令,它告诉我某些内容已被取消,但如果我更改了style.scss文件并保存它,它会编译并更新到我的html页面,所以'看'仍然有效。现在我必须关闭Sublime Text来杀死'watch'会话。

  2. 我想为我的主题根目录的路径使用变量,但是当我尝试用字符串连接变量时我收到此错误。我应该使用什么类型的语法,是否需要在package.json文件中创建一个变量?

代码

var theme_path = 'wp-content/themes/twentyfifteen/'; 

    // Sass plugin 
    sass: { 
     dist: { 
      files: { 
       theme_path + 'style.css': theme_path + 'sass/style.scss', 
      } 
     } 
    }, 

    // Error 
    Loading "Gruntfile.js" tasks...ERROR 
    >> SyntaxError: C:\wamp\www\grunt\Gruntfile.js:31 
    >>          theme_path + 'style.css': 'wp-content/th 
    emes/twentyfifteen/sass/style.scs 
    >>            ^
    >> Unexpected token + 
    Warning: Task "default" not found. Use --force to continue. 

这里是我的Gruntfile.js:

module.exports = function(grunt) { 

    // Theme Directory Path 
    var theme_path = 'wp-content/themes/twentyfifteen/'; 

    // Configure main project settings 
    grunt.initConfig({ 

     // Basic settings and info about our plugins 
     pkg: grunt.file.readJSON('package.json'), 

     // Watch Plugin 
     watch: { 
      sass: { 
      files: 'wp-content/themes/twentyfifteen/sass/*.scss', 
      tasks: ['sass','postcss','uglify'], 
      options: { 
       livereload: true, 
      }, 
      }, 
     }, 

     // Sass plugin 
     sass: { 
      dist: { 
       files: { 
        'wp-content/themes/twentyfifteen/style.css': 'wp-content/themes/twentyfifteen/sass/style.scss', 
       } 
      } 
     }, 

     // Postcss plugin 
     postcss: { 
      options: { 
       map: true, // inline sourcemaps 

       // or 
       map: { 
        inline: false, // save all sourcemaps as separate files... 
       }, 

       processors: [ 
       require('pixrem')(), // add fallbacks for rem units 
       require('autoprefixer')({browsers: 'last 2 versions'}), // add vendor prefixes 
       require('cssnano')() // minify the result 
       ] 
      }, 
      dist: { 
       src: 'wp-content/themes/twentyfifteen/style.css' 
      } 
     }, 

     // Minify JS Uglify 
     uglify: { 
      dist: { 
       files: { 
        'wp-content/themes/twentyfifteen/js/functions.min.js': ['wp-content/themes/twentyfifteen/js/functions.js'] 
       } 
      } 
     } 

    }); 

    // Load the plugin 
    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-contrib-sass'); 
    grunt.loadNpmTasks('grunt-postcss'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 

    // Run plugin 
    grunt.registerTask('default', ['watch']); 

}

回答

0

我认为任务的选项不能有可变分配,我不目前有任何消息来源,但我可以建议另一种方式来做到这一点:

您可以使用任务PARAMS:

watch: { 
    sass: { 
     files: '<%= grunt.task.current.args[0] %>/sass/*.scss', 
     tasks: ['sass:<%= grunt.task.current.args[0] %>','postcss','uglify'], 
     options: { 
      livereload: true, 
     }, 
    }, 
}, 
sass: { 
     dist: { 
      files: { 
       '<%= grunt.task.current.args[0] %>/style.css': '<%= grunt.task.current.args[0] %>/sass/style.scss', 
      } 
     } 
}, 

,比

grunt.registerTask('default', ['watch:'+theme_path]); 

这是我已经满足,使动态监视任务

问题
相关问题