将Grunt Jade选项传递给文件

时间:2014-07-03 13:40:06

标签: javascript gruntjs

我正在使用grunt-contrib-jade,我想使用pkg.name和pkg.version构建我的css文件名。我无法让这个工作,并希望有人可以帮助我。这就是我所拥有的:

Gruntfile中的部分玉器任务

compile: {
    options: {
        data  : {
            app    : '<%= pkg.name %>',
            version: '<%= pkg.version %>',
        },
        pretty: true
    }

然后在我的玉文件中我有:

link(href='_assets/css/<%= app %>-<%= version %>.css', rel='stylesheet', media='screen')

不知道如何从Gruntfile中的jade任务中添加编译选项中的数据。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

看起来你没有将package.json加载到你的Grunt配置中,为你的grunt文件添加了以下内容。

grunt.initConfig({
   pkg: require("./package.json"),// <---- add this line
   compile: {
       options: {
          data  : {
              app    : '<%= pkg.name %>',
              version: '<%= pkg.version %>',
          },
          pretty: true
       }
  }
});

我个人更喜欢将它添加到如下的元对象下:

grunt.initConfig({
   meta{
      pkg: require("./package.json"),// <---- add this line
   },
   compile: {
       options: {
          data  : {
              app    : '<%= meta.pkg.name %>', // <-- notice i added meta
              version: '<%= meta.pkg.version %>',// <-- notice added meta
          },
          pretty: true
       }
  }
});

你也可以尝试以下方法:

var pkg = require("./package.json");

grunt.initConfig({
   compile: {
       options: {
          data  : {
              app    : pkg.name, // <-- notice no quotes and no micro templating
              version: pkg.version ,// <-- notice no quotes and no micro templating
          },
          pretty: true
       }
  }
});

这种方法不像前一种那样动态。