0

我正在努力grunt制作构建工具,直到现在我直接在我的 grunt.js 文件中放置src和地址,但在这种情况下,如果我想更改我的目标,我必须更改文件的每个任务,这不是一个好习惯。dest例如,如果我的 grunt.js 文件有以下任务:

concat: {
  js: {
    src: 'src/js/*.js',
    dest: 'dest/js/concat.js'
  },
  css: {
    src: 'src/css/*.css',
    dest: 'dest/css/concat.css'
  }
},
min: {
  js: {
    src: 'dest/js/concat.js',
    dest: 'dest/js/concat.min.js'
  }
},

在这里,如果我改变我的地址,我必须在每个地方都改变!!!我想要一个JSON文件,我可以在其中声明 src 和 dest 并调用我的 grunt.js 文件。我们怎么能这样做???

4

2 回答 2

1

您可以添加一个属性package.json来声明元数据,例如

{
   "name": "test",
   "meta":{
     "src":"someSrcFolder",
     "dest":"someDestFolder"
   },
 ....
}

然后在您的 中Gruntfile.js,您可以像这样读取这些属性

grunt.initConfig({
  pkg: '<json:package.json>',
  concat: {
    js: {
      src: '<%= pkg.meta.src %>/js/*.js',
      dest: '<%= pkg.meta.dest %>/js/concat.js'
    },
    css: {
      src: '<%= pkg.meta.src %>/css/*.css',
      dest: '<%= pkg.meta.dest %>/css/concat.css'
    }
  }
});

重要的位是pkg:<json:package.json>将 json 文件加载到内存中,以及下划线模板插值<%= pkg.meta.src %>,它评估meta添加到 json 文件中的属性的内容。

请记住,Gruntfile只是一个 JavaScript 文件,因此您还可以拥有一个引用路径的对象,然后将它们插入到您的任务中。

于 2012-12-13T23:05:00.910 回答
1

这在 Grunt.js 0.4.0 中发生了变化。

您现在将使用:pkg: grunt.file.readJSON('package.json')

于 2013-05-05T17:41:21.357 回答