0

私の目標は、プロジェクトを 2 つの個別のビルド フォルダーにビルドし、それぞれに独自の Grunt タスクを作成できるようにすることです。

使用する別の Gruntfile を指定できるオプションがあることgrunt-cliに気付きました。--gruntfileこれまでのところ、私はGruntfile.js完全に機能しています (Yeoman からの在庫に近い)。また、隣にもう1人Gruntfile2.js座っています。

Gruntfile.js

var yeomanConfig = {
    app: 'app',
    dist: '../www_browser'
};

Gruntfile2.js

var yeomanConfig = {
    app: 'app',
    dist: '../www'
};

grunt buildGruntfile.js を実行するためのものであり、完全に実行します。

grunt build --gruntfile Gruntfile2.jsを実行するGruntfile2.jsためのものであり、いくつかの問題があります。../www(フォルダーではなくフォルダーにビルドすることになってい../www_browserます)

--gruntfile ディレクティブは、grunt-useminとgunt -contrib-htmlminを除くほぼすべてのタスクの適切なフォルダーにビルドします。ここのコンソールへのこの出力のために、私はこれを知っています:

Running "usemin:css" (usemin) task
Processing as CSS - ../www_browser/styles/22f60055.main.css

Running "concurrent:dist" (concurrent) task

Running "htmlmin:dist" (htmlmin) task
File ../www_browser/404.html created.
File ../www_browser/index.html created.

../www_browserがコンソール出力に表示されます。他のすべてのタスクは、予想される../wwwフォルダーで実行されます。

これは usemin キャッシュのことですか? グラントキャッシュのこと?または、ディレクティブに関係なく、デフォルトの Gruntfile.js から単純にいくつかのタスクを実行します--gruntfile Gruntfile2.jsか?

今のところ、単一の Gruntfile から複数のターゲットを実行しようとすることをあきらめました。Yeoman の Gruntfile.js には、複数のビルド ターゲットをまだサポートしていない依存関係が多すぎます。私はそのアプローチで 12 時間を無駄に費やしました。

バージョン情報

$: grunt --version
grunt-cli v0.1.9
grunt v0.4.1

$: npm --version
1.2.25

$: yo --version
1.0.3

パッケージ.json

{
  "name": "myapp",
  "version": "0.0.0",
  "dependencies": {},
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-concat": "~0.1.3",
    "grunt-contrib-coffee": "~0.6.5",
    "grunt-contrib-uglify": "~0.2.0",
    "grunt-contrib-compass": "~0.2.0",
    "grunt-contrib-jshint": "~0.4.1",
    "grunt-contrib-cssmin": "~0.6.0",
    "grunt-contrib-connect": "~0.2.0",
    "grunt-contrib-clean": "~0.4.0",
    "grunt-contrib-htmlmin": "~0.1.3",
    "grunt-bower-requirejs": "~0.4.1",
    "grunt-contrib-requirejs": "~0.4.0",
    "grunt-contrib-imagemin": "~0.1.3",
    "grunt-contrib-watch": "~0.4.0",
    "grunt-rev": "~0.1.0",
    "grunt-usemin": "~0.1.10",
    "grunt-mocha": "~0.3.0",
    "grunt-open": "~0.2.0",
    "grunt-svgmin": "~0.1.0",
    "grunt-concurrent": "~0.1.0",
    "matchdep": "~0.1.1",
    "connect-livereload": "~0.2.0"
  },
  "engines": {
    "node": ">=0.8.0"
  }
}
4

1 に答える 1

1

古いバージョンの grunt-concurrent を使用しているようですが、子プロセスに grunt フラグを渡していないようです。

ここを参照してください: https://github.com/sindresorhus/grunt-concurrent/blob/v0.1.0/tasks/concurrent.js#L11

プラグインの現在のバージョンでは、フラグが渡されます。こちらを参照してください: https://github.com/sindresorhus/grunt-concurrent/blob/v0.3.1/tasks/concurrent.js#L22

したがって、grunt-concurrent のバージョンを更新することをお勧めします。

npm install grunt-concurrent@latest --save-dev

于 2013-08-27T20:44:14.137 に答える