2014-10-09 11 views
14

Ho un'app AngularJS su cui sto lavorando per usemin. Questa app ha 2 pagine html, entrambe includono un blocco minificato in un common.js e le altre pagine includono min j per quelle pagine specifiche.Usi "Diverse fonti che tentano di scrivere sulla stessa destinazione"

page1.html

<!-- build:js scripts/common.js --> 
<!-- bower:js --> 
<script src="a.js"></script> 
<script src="b.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 

<!-- build:js scripts/page1.js --> 
<!-- bower:js --> 
<script src="c.js"></script> 
<script src="d.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 

page2.html

<!-- build:js scripts/common.js --> 
<!-- bower:js --> 
<script src="a.js"></script> 
<script src="b.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 

<!-- build:js scripts/page2.js --> 
<!-- bower:js --> 
<script src="e.js"></script> 
<script src="f.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 

Gruntfile.js

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

Usemin è sconvolta perché common.js è definita in entrambi i file con l'errore: Errore irreversibile: diverse origini che tentano di scrivere sulla stessa destinazione :. Io (penso) ho bisogno di includere sia page1 che page2 in useminPrepare per ottenere correttamente page1.js e page2.js generati. In che modo le persone risolvono questo problema?

+3

Hai capire questo su? Ho lo stesso problema. – Joao

+1

Ho finito per rinominare "common.js" in "common2.js" in uno dei file perché avevo bisogno di andare avanti. Non è un file enorme quindi non sono eccessivamente preoccupato, ma mi piacerebbe ancora trovare una soluzione migliore. – Justin

risposta

1

In genere con persone angolari creare applicazioni a pagina singola e creare solo un index.html "principale" per l'intero scheletro della pagina. In questo modo devi gestire solo un set di file. Le diverse sotto-pagine sono rese in un dato div usando ui-router, ng-include o qualcos'altro.

+4

Ma non è sempre così. Ad esempio, stiamo creando un prodotto white label e disponiamo di un file index.html per ogni azienda. Ci sono sottili cambiamenti nei file indice, come i file css ... ma i file js sono essenzialmente gli stessi. – JobaDiniz

1

Il problema per me quando ho avuto questo problema era che il codice deve essere esattamente lo stesso tra i commenti html di build/endbuild. Sembra che dovrebbe corrispondere ai nomi dei file, ma sembra corrispondere al contenuto tra i commenti. Anche la tabulazione e gli spazi possono essere un problema.

+0

Questo è vero per me SOLO nel caso di build: css –

0

AVVISO NON PROVATO.

È possibile creare un blocco personalizzato che potrebbe riscrivere il blocco su <script src="scripts/common.js"></script> ma non tentare di "creare" lo script nel processo usemin.

options: { 
    blockReplacements: { 
     noBuild: function (block) { 
      return '<script src="scripts/common.js"></script>'; 
     } 
    } 

Poi in tutti i file HTML che non si vuole costruire la sceneggiatura comune per, ma si desidera sostituire il percorso, scrivere il seguente:

<!-- build:noBuild scripts/common.js --> 
<!-- bower:js --> 
<script src="a.js"></script> 
<script src="b.js"></script> 
<!-- endbower --> 
<!-- endbuild --> 
+0

Spero che questo ha funzionato, per favore fatemelo sapere. –

+0

L'ho appena testato, non funziona. Dopo di ciò è apparso un errore su uglify. '>> Nessun obiettivo" uglify "trovato. – darksoulsong

Problemi correlati