4

有没有办法在 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重新编译。我检查了插件,但找不到任何可以提供该功能的东西。

4

2 回答 2

5

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

...

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

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

...
于 2014-05-13T09:27:59.133 回答
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 }, }, }

于 2014-05-14T21:45:51.923 回答