2016-01-05 1 views
8

Derzeit habe ich mehrere Winkelmodule. Eine benutzerdefinierte Grunt-Aufgabe erstellt, minimiert und verpackt jedes Modul, sodass es bereit ist, es bereitzustellen. Das Einzige, was ich noch nicht getan habe, ist die Verwaltung der Version dieser Module.Verwalten Sie AngularJS Module Version und Releases mit Grunt

Jedes Projekt (ein pro Modul) eine package.json Datei enthält, in dem ich den Namen und die Version einer Komponente erklären:

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

So ist jedes Modul in einem Verzeichnis * gebaut/dist/my -module/1.0.0/

Aber im Modul selbst muss ich auf seine Version zugreifen. Zum Beispiel deklariere ich in einer Steuerung eine Variable . Derzeit ist es jedoch im Controller-Skript fest codiert.


Erste Frage, ist es eine Möglichkeit, das Modul die Version von der package.json Datei bekommen? Oder dass die grunt-Task, die die Anwendung erstellt, ein bestimmtes Flag in den Skripten durch die aktuelle Version des Moduls ersetzt? (Zum Beispiel könnte ich meine Variable deklarieren $scope.version = 'FLAG_VERSION' zu wissen, dass die Fahne durch den richtigen Wert während des Build-Grunzen ersetzt) ​​


Zweite Frage, gibt es einige Grunzen Komponente, die die aktuelle Version zu markieren erlaubt ein Modul in meinem VCS (zum Beispiel SVN) und dann die aktuelle Version inkrementieren? Kurz gesagt, führen Sie eine Freigabe des Moduls durch.

Edit: neue Frage in dieser Angelegenheit gefragt, siehe Bump a specific version number on SVN using Grunt


Jede Hilfe oder Blei wird geschätzt!

+1

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

+1

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

+0

Funktioniert Grunt-Bump mit einem anderen VCS als GIT? – Eria

Antwort

1

Erste Frage

ich Grunzen-ng-Konstante Aufgabe hinzugefügt (danke @ Joe) zu meinem Grunzen Build Winkel Konstanten aus der package.json-Datei zu erzeugen. Es funktioniert großartig, ich kann sie jetzt in meine Anweisungen und Dienste einfügen. Ich musste den Modulnamen jedoch zu meiner package.json hinzufügen, da die ng-constant-Task es benötigt, um das Modul für die generierten Konstanten zu identifizieren. Und der in package.json deklarierte Name war mehr ein Projektname als der Name des Moduls.

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

unter dem Ergebnis der ng-ständige Aufgabe:

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

änderte ich meine Grunzen Build-Task dieses generierte Skript am Ende meiner Bewerbung Skript zu verketten, bevor minification. So, jetzt kann ich appInfo in einem Dienst verwenden, zB:

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

Vorsicht! Ich hatte eine Überraschung, wenn ich dies auf mehrere Module auf derselben Seite anwendete: Wenn eine Konstante mit demselben Namen auf zwei verschiedenen Modulen deklariert wird, wird der Wert des ersteren durch diesen überschrieben. AngularJS module.constant() : how to define a constant inside a module only?


Zweite Frage

fragte ich eine andere Frage, genauer gesagt, in dieser Frage: Bump a specific version number on SVN using Grunt.