0

我创建了一个 Grunt 插件,用于生成 YAML 或 JSON 格式的“清单”。例如,任务可以从给定的元数据创建 package.json 或 component.json,或者使用其中一个文件的元数据来构建另一个。

该任务还包括一个选项,用于读取文件目录以从具有特定文件扩展名的文件中生成“集合”。因此,例如,您可以创建一个“组件”清单,列出组件所需的文件:

{
  "name": "My Component",
  "description": "",
  "version": "",
  "scripts": {
    "jquery.js",
    "component.js"
    "one.js",
    "two.js",
    "three.js"
  },
  "styles": {
    "component.css"
  }
}

因此,两者srcdest都用于构建“集合”的任务,但是,当您只生成一个package.jsoncomponent.json例如时,您只需要dest.

我没有找到用于执行此操作的本地 Grunt 方法,或另一种实现相同目标的干净方法?

4

1 回答 1

0

You can use one of:

Example (simplified):

module.exports = function( grunt ) {
    "use strict";
    var util = require('util');

    grunt.initConfig({
        pkg: grunt.file.readJSON("package.json")
    });

    grunt.registerTask('default', ['normalizeMultiTaskFiles', 'expand']);

    grunt.registerTask('normalizeMultiTaskFiles', function(pattern) {
        var result = grunt.task.normalizeMultiTaskFiles(['./public/**/*']);
        console.log(util.inspect(result[0].src));
    });

    grunt.registerTask('expand', function() {
        var result = grunt.file.expand(['./public/**/*']);
        console.log(util.inspect(result));
    })
};

Output:

Running "normalizeMultiTaskFiles" task
[ './public/css',
  './public/css/main.css',
  './public/index.html',
  './public/js',
  './public/js/file1.js',
  './public/js/file2.js',
  './public/js/file3.js',
  './public/js/index.js',
  './public/js/lib',
  './public/vendor',
  './public/vendor1.js',
  './public/vendor2.js' ]

Running "expand" task
[ './public/css',
  './public/css/main.css',
  './public/index.html',
  './public/js',
  './public/js/file1.js',
  './public/js/file2.js',
  './public/js/file3.js',
  './public/js/index.js',
  './public/js/lib',
  './public/vendor',
  './public/vendor1.js',
  './public/vendor2.js' ]
于 2013-05-05T14:42:42.123 回答