Grunt.js依赖管理

时间:2013-02-14 08:54:33

标签: dependencies gruntjs recompile

有没有办法在Grunt中指定文件依赖项?即如果我有:

global/page.jade
project/index.jade -- includes global/page.jade
project/about.jade -- includes global/page.jade
project/test.jade

然后我更改global/page.jade然后我想重新编译project/index|about.jade。我检查了插件但找不到任何可以提供该功能的东西。

2 个答案:

答案 0 :(得分:5)

grunt watch以下列方式在你的gruntfile.js中使用

...

  watch: {
    scripts: {
      files: 'src/**/*',
      tasks: ['buildDevelopment'],
      options: {
        interrupt: true,
      },
    }

grunt.registerTask('buildDevelopment', ['clean'
                        ,'jade'
                        ,'copy:development'
                        ,'bowercopy:development'
                        ]);

...

答案 1 :(得分:2)

我建议增强Atillas解决方案。在每次更改时重建所有模板都不是最佳选择,并且会让您对大型项目感到厌烦。

以下是应该提供的帮助:


使用较新的插件仅处理已更改的文件

安装: npm install grunt-newer --save-dev
文档: https://www.npmjs.org/package/grunt-newer#optionsoverride
用法:

  • 使用较新的前缀任务:
  • 添加grunt.loadNpmTasks('grunt-newer');到gruntfile
  • 使用覆盖选项来检查包含(您正在寻找的魔法)

newer: { options: { override: function (detail, include) { if (detail.task === 'jade') { checkForModifiedImports(detail.path, detail.time, include); } else { include(false); } } } }



使用watch检测文件更改

安装: npm install grunt-contrib-watch --save-dev 文档: https://www.npmjs.org/package/grunt-contrib-watch
用法:

  • 添加grunt.loadNpmTasks('grunt-contrib-watch');到gruntfile
  • 任务可能看起来像这样

watch: { scripts: { files: '**/*.jade', tasks: ['newer:jade'], options: { interrupt: true }, }, }