0

package.json を定義した変数に基づいてセット ファイルを連結する必要があります。

// package.json
...

"layouts": [
    { 
      "page": "home",
      "version": "a"
    },
    { 
      "page": "about",
      "version": "a" 
    },
    { 
      "page": "contact",
      "version": "b" 
    }
  ]

...

grunt では、これらを JSON 配列に構築し、それをsrcgrunt-concat-contrib タスクのパラメーターに送り込みます。

// gruntfile.js
...

var package = grunt.file.readJSON('package.json'),
    targets = package.layouts,
    paths = [];

    for (var target = 0; target < targets.length; target++) {
        paths.push("layouts/" + targets[target]['page'] + "/" + targets[target]['version'] + "/*.php");
    };

    var paths = JSON.stringify(paths);

    grunt.log.write(paths); // Writing this to console for debugging

    grunt.initConfig({
        concat: {
            build: {
                src: paths,
                dest: 'mysite/Code.php',
                options: {
                    separator: '?>\n\n'
                }
            }
        }
    });

...

私の問題は、変数がに割り当てられているときにpaths変数が内部で機能しないことです。initConfigJSON.stringify(paths)

パス変数をコンソールに記録した場所からコピーした次のような配列を手動で入力すると、機能します!

var paths = ["layouts/home/a/*.php","layouts/about/a/*.php","layouts/contact/b/*.php"];

私は何が欠けていますか?

4

1 に答える 1

0

ダープ。私はそれを修正しましJSON.stringify()た。配列は必要ありませんでした。

最終的な作業 gruntfile は次のとおりです。

// gruntfile.js
...

var package = grunt.file.readJSON('package.json'),
    targets = package.layouts,
    paths = [];

for (var target = 0; target < targets.length; target++) {
    paths.push("layouts/" + targets[target]['page'] + "/" + targets[target]['version'] + "/*.php");
};

grunt.initConfig({
    concat: {
        build: {
            src: paths,
            dest: 'mysite/Code.php',
            options: {
                separator: '?>\n\n'
            }
        }
    }
});

...
于 2015-02-09T23:26:12.710 に答える