2016-01-05 13 views
8

Attualmente, ho più moduli angolari. Un'attività personalizzata concatena, riduce e impacchetta ogni modulo in modo che sia pronto per la distribuzione. L'unica cosa che non ho ancora fatto è di gestire la versione di questi moduli.Gestire i moduli AngularJS versione e release utilizzando Grunt

Ogni progetto (uno per ogni modulo) contiene un file package.json, in cui dichiaro il nome e la versione di un componente:

{ 
    "name": "my-module", 
    "version" : "1.0.0", 
    // etc. 
} 

Così ogni modulo è costruito in una directory */dist/mia -module/1.0.0/

Ma, nel modulo stesso, ho bisogno di accedere alla sua versione. Ad esempio, in un controller, dichiaro una variabile $scope.version = '1.0.0'. Ma al momento, è codificato nello script del controller.


Prima domanda, c'è un modo in cui il modulo potrebbe ottenere la versione dal file package.json? O che l'operazione grunt che costruisce l'applicazione sostituisce un dato flag negli script dalla versione corrente del modulo? (Per esempio, ho potuto dichiarare la mia variabile $scope.version = 'FLAG_VERSION' sapendo che durante il grugnito build sostituire la bandiera con il giusto valore)


Seconda domanda, c'è qualche componente grugnito che permette di etichettare la versione corrente di un modulo nel mio VCS (SVN per esempio) e quindi incrementare la versione corrente? In breve, eseguire una versione del modulo.

Edit: nuova domanda ha chiesto al riguardo, vedere Bump a specific version number on SVN using Grunt


Qualsiasi aiuto o vantaggio sarà apprezzato!

+1

https://github.com/vojtajina/grunt-bump – gearsdigital

+1

https://github.com/werk85/grunt-ng-constant – Joe

+0

È grunt-bump che funziona con un altro VCS rispetto a GIT? – Eria

risposta

1

Prima domanda

ho aggiunto un compito grugnito-ng-costante (grazie @ Joe) al mio grugnito build per generare costanti angolari dal file package.json. Funziona alla grande, ora posso inserirli nelle mie direttive e servizi. Ho dovuto aggiungere il nome del modulo al mio package.json, perché l'attività ng-constant ha bisogno di identificare il modulo per le costanti generate. E il nome dichiarato in package.json era più un nome di progetto che il nome del modulo.

{ 
    "name": "my-project", 
    "version" : "1.0.0", 
    "moduleName": "myModuleName" 
    // etc. 
} 

Di seguito il risultato del compito ng-costante:

angular.module('myModuleName') 
.constant('appInfo', {name:'my-project',version:'1.0.0'}) 
; 

ho cambiato il mio compito grugnito build per concat questo script generato alla fine del mio script applicazione, prima di minimizzazione. Così ora posso utilizzare appInfo in un servizio, ad esempio:

angular.module('myModuleName').service('myService', [ ..., 'appInfo', function(..., appInfo){ 
    // I can use appInfo.name and appInfo.version here ! 
} 

Fate attenzione! Ho avuto una sorpresa applicando questo a diversi moduli sulla stessa pagina: se una costante con lo stesso nome è dichiarata su due moduli diversi, il valore del primo sarà superato da quest'ultimo. AngularJS module.constant() : how to define a constant inside a module only?


Seconda domanda

ho chiesto un'altra domanda, più precisa, al riguardo: Bump a specific version number on SVN using Grunt.