4

プロジェクトで yeoman を使用しようとしていますが、Grunt でビルドしようとしているときに問題に直面しています:

アプリケーションで使用されるメイン ファイルである application.js があり、require.js を使用しています。Grunt ビルドを実行すると、dist フォルダーに js ファイルが作成され、連結および縮小されます。

問題は、アプリケーションの別のページで使用する 2 つ目の JavaScript ファイル (application2.js など) を作成しようとしたときです。Grunt を実行すると、ファイルは作成されますが空です。一部のjsまたはrequire.jsの問題を除外するために機能しているものと同じjsを使用してみましたが、同じです。

私が把握できる唯一のことは、Grunt のどこかがそのファイルのみを処理するように構成されていることです。実際に実行すると、コンソールに次のように表示されます。

Found a block:
    <!-- build:js scripts/application.js -->
    <script data-main="scripts/application" src="components/requirejs/require.js"></script>
    <!-- endbuild -->
Updating config with the following assets:
    - dist/scripts/application.js

Found a block:
    <!-- build:js scripts/application2.js -->
    <script data-main="scripts/application2" src="components/requirejs/require.js"></script>
    <!-- endbuild -->
Updating config with the following assets:
    - dist/scripts/application2.js

Configuration is now:

  cssmin:
  { dist: {} }

  concat:
  { 'dist/scripts/application.js': [ 'dist/scripts/application.js' ],
  'dist/scripts/vendor/modernizr.js': [ 'app/components/modernizr/modernizr.js' ],
  'dist/scripts/application2.js': [ 'dist/scripts/application2.js' ] }

  uglify:
  { 'dist/scripts/application.js': 'dist/scripts/application.js',
  'dist/components/requirejs/require.js': 'app/components/requirejs/require.js',
  'dist/scripts/vendor/modernizr.js': 'dist/scripts/vendor/modernizr.js',
  'dist/scripts/application2.js': 'dist/scripts/application2.js' }

  requirejs:
  { dist:
   { options:
      { baseUrl: 'app/scripts',
        optimize: 'none',
        preserveLicenseComments: false,
        useStrict: true,
        wrap: true,
        uglify2: {},
        name: 'application',
        out: 'dist/scripts/application.js',
        mainConfigFile: 'app/scripts/application.js' } } }

Running "requirejs:dist" (requirejs) task
>> RequireJS optimizer finished
Uncompressed size: 1361156 bytes.
Compressed size: 304370 bytes gzipped.

Concat タスクと Uglify タスクは 2 番目の JavaScript ファイルを参照しますが、requirejs. プロパティ「mainConfigFile」を変更して両方を含めようとしましたが、オーバーライドされ続けます...

何か案は??

4

1 に答える 1

5

最初に興味があるのは、yeoman システム内で複数のアプリケーション ファイルを定義しようとしている理由です。これは複数の HTML ページ用だと思いますか? または、次の 2 つがありますか。

<script data-main="..." src="components/requirejs/require.js"></script> 

単一の HTML ファイル内で?

これに対する修正に関しては、mainConfigFile は「out」パラメーターを使用して生成されるため、ここでの設定は機能しません。

requirejs セクションには、各ファイルの「dist」セクションが必要です。また、name と out を手動で指定する必要があります。これがバグなのか意図した動作なのかは不明です。

requirejs: {
   dist1: {
      options: {
         name: 'application', out: 'dist/scripts/application.js',
         ...}
   },
   dist2: {
      options: {
         name: 'application2', out: 'dist/scripts/application2.js',
         ...

また、2 つの別個の HTML ファイルを useminPrepare に追加する必要がありますが、すでにそれを行っているか、1 つの HTML ファイル内で application と application2 を参照しているようです (1 つの html ファイル内の 2 つの requirejs 構成の結果がどうなるかはわかりません)。 .

    useminPrepare: {
        html: ['<%= yeoman.app %>/index.html','<%= yeoman.app %>/index2.html'],
        options: {
            dest: '<%= yeoman.dist %>'
        }
    },

後世のために、bower config に 2 つのスクリプトも追加しましたが、それが重要であると 100% 確信することはできません。

    bower: {
        all: {
            rjsConfig: ['<%= yeoman.app %>/scripts/application.js','<%= yeoman.app %>/scripts/application2.js']
        }
    }

結果の構成出力は次のとおりです。http://pastie.org/7321492

于 2013-04-05T00:02:04.873 に答える