使用 grunt 将 jade 模板编译为 sails.js 中的 javascript 函数

Using grunt to compile jade templates to javascript functions in sails.js

我正在 Sails.js 中构建一个应用程序,我想将一些 jade 模板编译为 javascript 函数以供客户端使用。我找到了几篇解释如何执行此操作的文章,但是当我尝试执行他们的步骤时,它们似乎对我不起作用

我正在尝试编译位于 App/Views/Client 的文件并将编译后的 javascript 文件放入 App/.tmp/public/templates

我的g运行t任务在App/tasks/config,是基于sails.js自带的coffeescript g运行t任务。我的 g运行t 任务看起来像这样

module.exports = function(grunt) {
    grunt.config.set('jade', {
        dev: {
            templates:{
                options: {
                    pretty: true,
                    client: true,
                    namespace: 'Templates'  
                },
                files: [{
                    expand: true,
                    cwd: 'views/client/',
                    src: ['**/*.jade'],
                    dest: '.tmp/public/templates/',
                    ext: '.js'
                }]
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-jade');
};

我已经把它添加到 sails.js 附带的 compileAssets.js g运行t 任务中,当我 运行 时,我可以看到它是 运行 ] 升帆命令。

当它 运行 时,它报告创建了 0 个文件,这表明我的路径有问题。然而,我已经根据与 sails.js 中其他 g运行t 任务相同的工作文件夹来定义它们。我尝试了多种路径变体,包括将 ./ 放在它们的开头,但 none 似乎有效。

任何人都可以帮助解释我的 g运行t 文件有什么问题吗?或者如何让它将正在查看的文件夹输出到控制台,以便我可以弄清楚我的路径是否正确?

您的配置对象太深一层。 dev 已经是任务的目标,Grunt 将开始在其中寻找 files 属性。 templates 被悄悄忽略了。

所以配置对象应该是这样的:

dev: {
  options: {
      pretty: true,
      client: true,
      namespace: 'Templates'  
  },
  files: [{
      expand: true,
      cwd: 'views/client/',
      src: ['**/*.jade'],
      dest: '.tmp/public/templates/',
      ext: '.js'
  }]
}