4

私はしばらくの間これと戦ってきました(Antベースの回避策をいくつか使用していました)、答えられなかった質問を投稿しました:古い類似/関連する質問

Require.jsを使用すると、同じプロファイル/構成ファイルを使用して複数のモジュールをビルドできます。例えば:

({
    appDir: 'some/path',
    baseUrl: 'some/base/path',
    dir: 'some/other/path',
    optimize: 'none',
    paths: {
        ...
    },

    modules: [
    {
        name: 'someModule',
    },
    {
        name: 'someOtherModule'
    }]
})

これはかなりうまく機能します。さらに、Require.jsには、特定のモジュールのビルドのオプションをオーバーライドするオプションがあります。Require / jsのビルド構成の例(次のように):

({
    appDir: 'some/path',
    baseUrl: 'some/base/path',
    dir: 'some/other/path',
    optimize: 'none',
    paths: {
        ...
    },

    modules: [
    {
        name: 'someModule',
    },
    {
        name: 'someModule',
        override : {
            optimize: 'uglify'
        }
    }]
})

またはそう私はそれを理解しました。目的は、同じアプリケーションで同じビルド構成ファイルを使用することですが、縮小されていないものと縮小されたものの両方があります。これは機能しません。

編集 私が得ているエラーは次のとおりです(より大きなAntビルドの一部であるため、クリーンアップされています):

Error: ENOENT, no such file or directory 'some/other/path/someModule.js-temp'

(両方の質問に関する)ヘルプ、提案は大歓迎です。

4

1 に答える 1

3

モジュールのリスト:configは、名前の値の重複を許可しません。それが問題の原因だと思います。これは、他のビルドレイヤーで除外される可能性のあるビルドレイヤーの適切な順序付けを可能にするための配列です。オブジェクトのキーの反復は順序を保証しないため、オブジェクトハッシュの使用は機能しません。

縮小されていない形式と縮小された形式のレイヤーを持つビルドを実行する場合は、ノードスクリプトを介してビルドを駆動し、手動でuglifyを要求して、ビルドされたファイルのコピーを実行し、ビルド後にそのコピーを縮小することをお勧めします。

ビルドを駆動するノードスクリプトの例を次に示します 。https ://github.com/jrburke/r.js/blob/master/build/tests/tools/override/override.js

これは、使用されているuglifyのバージョンを置き換えるものですが、これを使用して、requirejs.optimize()に渡されるコールバック関数でファイルのコピー/手動ミニファイを実行できます。

于 2012-04-21T04:47:39.187 に答える