【问题标题】:Grunt.js dependency managementGrunt.js 依赖管理
【发布时间】:2014-05-15 06:02:05
【问题描述】:

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

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。我检查了插件,但找不到任何可以提供该功能的东西。

【问题讨论】:

  • 你在用什么任务?
  • @AllanKimmerJensen 我正在使用grunt-contrib-jade 并遇到同样的问题。我的gruntfile 在这里:gist.github.com/Grawl/11396423
  • 我在grunt-cotrib-jade repo 提出了一个问题,目前还没有答案。 github.com/gruntjs/grunt-contrib-jade/issues/100
  • 不要依赖jade,试试grunt-contrib-watch todo recompile?
  • 在第 63 行尝试将 'newer:jade' 更改为 'jade',这应该编译所有的翡翠模板,而不仅仅是更改的那个。

标签: dependencies gruntjs recompile


【解决方案1】:

grunt watch 按以下方式在您的 gruntfile.js 中使用

...

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

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

...

【讨论】:

    【解决方案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 }, }, }

    【讨论】:

    • 我有 Fatal error: checkForModifiedImports is not defined 对此。使用gruntfile.coffee
    • 看起来 checkForModifiedImports() 是一个用户定义的函数 - 在较新的、jade 或较少的项目中没有定义(较新的自述文件引用较少)。我很想看一个例子!
    • 好的,我在newer repo Issues github.com/tschaub/grunt-newer/issues/44询问了这个问题
    • 您必须为此编写自己的函数。我很快就会发布示例。
    • 我刚刚在 Github 上找到了某人的 gruntfile.coffee#105 的有效解决方案。很简单,1,2,3:if detail.task is 'jade 然后include true。它有效。
    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2021-09-09
    • 2011-03-13
    • 2013-06-15
    • 2011-11-24
    • 2010-09-13
    • 2011-09-04
    相关资源
    最近更新 更多