2016-08-01 4 views
1

Ich möchte zwei Ziele in meinem Projekt. Eine für Admin und eine für Benutzerseiten. Ich möchte nicht, dass die Admin-Plugins aus Leistungsgründen in Benutzerseiten integriert werden. Ich erhalte jedoch diesen Fehler bei dem Versuch, einen Build auszuführen:Grunt useminPrepare und usemin funktioniert nicht mit mehreren Aufgaben und Dateien (concat schlägt fehl)

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. 

Ich kann keine concat Aufgabe in GruntFile.js finden, um zu sehen, was los ist. Meine GruntFile.js usemin Aufgaben sind wie folgt:

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' 
]); 

und die HTML-Pendants sind folgende für js Dateien. Zunächst wird der Admin-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 --> 

Und nun die Datei 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 --> 

Antwort

1

Das Zusammenführen der beiden Aufgaben löste das Problem für mich. Obwohl explizit deklariert concat, cssmin, uglify etc. Aufgaben wie Vijay vorgeschlagen ist auch eine Option, Es ist einfach zu umständlich. Ich habe die GruntFile.js wie folgt:

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

Vielleicht haben Sie keinen concat Parameter oben in den InitConfig Einstellungen in Gruntfile.js, haben aber Es wird im Befehl "BUILD" festgelegt. Grunt nicht weiß, was das concat String bezieht sich auf so wirft er einen Fehler

zu entfernen versuchen ‚concat‘ wie unter

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

oder das Hinzufügen einer concat Schlüssel in Ihrer Konfigurationseinstellungen Beispiel unter

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

Als ich die 'concat' Aufgabe entfernen in' grunt.registerTask' es jetzt compains über 'cssmin' Aufgabe mit dem gleichen Fehler. Ich denke, diese Aufgaben funktionieren nicht mit mehreren Zielen von UseMin und müssen explizit wie in der zweiten Option beschrieben konfiguriert werden. Aber ich habe eine bessere Lösung gefunden. Ich habe nur die Usemin-Aufgaben zusammengeführt und stattdessen Arrays von Dateien verwendet. Jetzt macht der Build, was ich will. Sehen Sie sich meine Antwort unten an. –

+0

Ja, Sie können Array von Dateien als Quelldateien verwenden. Danke für deinen Kommentar Baris. –

Verwandte Themen