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

时间:2015-10-06 21:55:30

标签: javascript gruntjs sails.js pug

我正在Sails.js中构建一个应用程序,我想将一些jade模板编译成javascript函数,以便从客户端使用。我找到了一些文章解释如何做到这一点,但当我尝试实施他们的步骤时,他们似乎不适合我

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

我的grunt任务在App / tasks / config中,并且基于sails.js附带的coffeescript grunt任务。我的咕噜声任务看起来像这样

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 grunt任务中,我可以看到它在运行sails lift命令时运行。

运行时会报告创建的0个文件,这表明我的路径存在问题。但是我已经根据与sails.js中的其他grunt任务相同的工作文件夹来定义它们。我在路径上尝试了很多变化,包括在它们的开头放置./,但似乎都没有。

任何人都可以帮忙解释我的grunt文件有什么问题吗?或者如何让它将正在查看的文件夹输出到控制台,以便我可以判断出我的路径是否正确?

1 个答案:

答案 0 :(得分:1)

您的配置对象太深了一层。 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'
  }]
}