grunt打印变量到模板

时间:2015-06-12 11:29:50

标签: javascript gruntjs

我正在尝试将变量打印到横幅模板,但输出是空注释,是否可以将值插入模板?

我的代码:

//get the license text
var license = grunt.file.read('license.txt', {'encoding': 'utf-8'});

然后在uglify任务中,我想将该文本添加为​​横幅

uglify: {
    options: {
        compress: true,
        mangle: true,
        sourceMap: false,
        banner: '/*! <%= license %> */'
    },
    target: {
        src: 'dist/app.min.js',
        dest: 'dist/app.min.js'
    }
},

但是,在任何代码开始之前,输出的文件只包含空注释

/*!  */

我可以使用console.log(许可证)来确认其值是否正确检索。

1 个答案:

答案 0 :(得分:0)

我不确定,但似乎编码导致了这个问题。

不知道您的整个grunt设置,许可证变量应放在配置对象中,例如:

var appConfig = {
  app: require('./bower.json').appPath || 'app',
  dist: 'dist',
  license: grunt.file.read('license.txt')
};

(注意删除了utf-8编码)。

我所拥有的uglify任务略有不同 - 不使用compressmanglesourceMap选项。您似乎也可以使用targetmy_target

uglify: {
  options: {
    banner: '/*! ' + '<%= yeoman.license %> */'
  },
  my_target: {
    files: {
      '<%= yeoman.dist %>/scripts/scripts.js': ['<%= yeoman.dist %>/scripts/scripts.js']
    }
  }
 }

这很有效。简化的grunt文件:

module.exports = function (grunt) {

  ...

  // Configurable paths for the application
  var appConfig = {
    app: require('./bower.json').appPath || 'app',
    dist: 'dist',
    license: grunt.file.read('license.txt')
  };

  grunt.initConfig({

    yeoman: appConfig,

    ...

    uglify: {
      options: {
        banner: '/*! ' +
          '<%= yeoman.license %> */'
      },
      my_target: {
        files: {
          '<%= yeoman.dist %>/scripts/scripts.js': ['<%= yeoman.dist %>/scripts/scripts.js']
        }
      }
     },

    ...

  });

};