2016-08-01 2 views
1

私のプロジェクトには2つのターゲットが必要です。 1つは管理者用で、もう1つはユーザーページ用です。パフォーマンス上の理由から、管理者用プラグインをユーザーページに含めることは望ましくありません。ビルドを実行しようとしたときに、しかし、私はこのエラーを取得する:複数のタスクとファイルで作業していない準備と使用(連結が失敗します)

Running "useminPrepare:admin" (useminPrepare) task 
Configuration changed for concat, uglify, cssmin 

Running "useminPrepare:user" (useminPrepare) task 
Configuration changed for concat, uglify, cssmin 

No "concat" targets found. 
Warning: Task "concat" failed. Use --force to continue. 

私が間違っているものを見るためにGruntFile.jsに連結タスクを見つけることができません。

useminPrepare: { 
     admin: { 
      html: 'app/admin-index.html', 
      options: { 
       dest: 'dist' 
      } 
     }, 
     user: { 
      html: 'app/index.html', 
      options: { 
       dest: 'dist' 
      } 
     }, 
    }, 
    usemin: { 
     admin: { 
      html: 'dist/admin-index.html' 
     }, 
     user: { 
      html: 'dist/index.html' 
     } 
    } 

grunt.registerTask('build', [ 
    'clean:dist', 
    'less', 
    'useminPrepare:admin', 
    'useminPrepare:user', 
    'concat', 
    'copy:dist', 
    'cssmin', 
    'uglify', 
    'filerev', 
    'usemin:admin', 
    'usemin:user', 
    'htmlmin' 
]); 

をし、HTMLの対応がJSファイルに対して、次のとおりです。次のようなタスクusemin私GruntFile.jsです。まず管理者-のindex.html:

<!-- build:js(.) scripts/vendor.js --> 

<!-- jQuery and Bootstrap --> 
<script src="bower_components/jquery/dist/jquery.min.js"></script> 
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> 

<!-- MetsiMenu --> 
<script src="bower_components/metisMenu/dist/metisMenu.min.js"></script> 

<!-- Peace JS --> 
<script src="bower_components/pace/pace.min.js"></script> 

<!-- Angular scripts--> 
<script src="bower_components/angular/angular.min.js"></script> 
<script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script> 
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script> 

<!-- Angular Dependiences --> 
<!--      --> 
<!--      --> 
<!--      --> 

<!-- Datatables --> 
<script src="bower_components/datatables.net/js/jquery.dataTables.min.js"></script> 
<script src="bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script> 
<script src="bower_components/datatables.net-buttons/js/dataTables.buttons.min.js"></script> 
<script src="bower_components/jszip/dist/jszip.min.js"></script> 
<script src="bower_components/pdfmake/build/pdfmake.min.js"></script> 
<script src="bower_components/pdfmake/build/vfs_fonts.js"></script> 
<script src="bower_components/datatables.net-buttons/js/buttons.html5.min.js"></script> 
<script src="bower_components/datatables.net-buttons/js/buttons.print.min.js"></script> 
<script src="bower_components/datatables.net-buttons/js/buttons.colVis.min.js"></script> 

<!-- Datepicker --> 
<script src="bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script> 
<script src="bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js"></script> 
<script src="bower_components/datepair.js/dist/datepair.js"></script> 

<!-- Timepicker --> 
<script src="bower_components/jt.timepicker/jquery.timepicker.js"></script> 

<!-- endbuild --> 

<!-- build:js({.tmp,app}) scripts/scripts.js --> 
<!-- Custom and plugin javascript --> 
<script src="scripts/inspinia.js"></script> 

<!-- Anglar App Script --> 
<script src="scripts/app.js"></script> 
<script src="scripts/config.js"></script> 
<script src="scripts/directives.js"></script> 
<script src="scripts/controllers.js"></script> 
<!-- endbuild --> 

そして今、index.htmlファイル:

<!-- build:js(.) scripts/uivendor.js --> 

<!-- jQuery and Bootstrap --> 
<script src="bower_components/jquery/dist/jquery.min.js"></script> 
<script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script> 

<!-- Datepicker --> 
<script src="bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script> 
<script src="bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js"></script> 

<!-- endbuild --> 

答えて

1
以下のコンフィグ設定の例では、連結キーを追加し、以下のように「連結」を削除してみてくださいエラー

をスローに関し、何を知っていません

2つのタスクを結合することで、私の問題が解決しました。 Vijayが提案したように、concat、cssmin、uglifyなどのタスクを明示的に宣言しても、オプションでもありますが、あまりにも面倒です。次のように私はGruntFile.jsを変更:

useminPrepare: { 
     html: ['app/admin-index.html', 'app/index.html'], 
     options: { 
      dest: 'dist' 
     } 
    }, 
    usemin: { 
     html: ['dist/admin-index.html', 'dist/index.html'], 
    } 

grunt.registerTask('build', [ 
    'clean:dist', 
    'less', 
    'useminPrepare', 
    'concat', 
    'copy:dist', 
    'cssmin', 
    'uglify', 
    'filerev', 
    'usemin', 
    'htmlmin' 
]); 
1

おそらく、あなたはGruntfile.jsでinitConfig設定で上記の連結パラメータを持っていますが、持っていませんそれは "BUILD"コマンドで設定されます。うなり声は、連結文字列はそれが

grunt.registerTask('build', [ 
    'clean:dist', 
    'less', 
    'useminPrepare:admin', 
    'useminPrepare:user', 
    'copy:dist', 
    'cssmin', 
    'uglify', 
    'filerev', 
    'usemin:admin', 
    'usemin:user', 
    'htmlmin' 
]); 

または

concat: { 
    options: { 
     separator: ';', 
    }, 
    dist: { 
     src: ['src/file1.js', 'src/file2.js', 'src/file3.js'], 
     dest: 'dist/concat-file.js', 
    }, 
    }, 
+0

を、私はそれが今と同じエラーでcssmin'タスク 'についてcompains grunt.registerTask''で 'concat'タスクを削除する場合。私はこれらのタスクが複数のuseminターゲットでは動作しないと思いますし、2番目のオプションで述べたように明示的に設定する必要があります。しかし、私はより良い解決策を見つけました。私はちょうどuseminタスクをマージし、代わりにファイルの配列を使用しました。今ビルドは私が望むことをやっています。下の私の答えを見てください。 –

+0

はい、ファイルの配列をソースファイルとして使用できます。あなたのコメントBarisに感謝します。 –

関連する問題