【问题标题】:Using grunt to compile jade templates to javascript functions in sails.js在sails.js中使用grunt将jade模板编译成javascript函数
【发布时间】:2015-10-06 21:55:29
【问题描述】:

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

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

我的 grunt 任务位于 App/tasks/config 中,并且基于sails.js 附带的coffeescript grunt 任务。我的 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 文件出了什么问题?或者如何让它输出它正在查看的文件夹到控制台,这样我就可以确定我的路径是否正确?

【问题讨论】:

    标签: javascript gruntjs sails.js pug


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

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多