2016-01-05 9 views
8

Obecnie mam wiele modułów kątowych. Niestandardowe zadanie Grunta konkatruje, minimalizuje i pakuje każdy moduł, dzięki czemu jest gotowy do wdrożenia. Jedyne, czego jeszcze nie zrobiłem, to zarządzać wersją tych modułów.Zarządzaj wersjami i wersjami modułów AngularJS za pomocą Grunta

Każdy projekt (jeden na moduł) zawiera plik package.json, w którym Oświadczam, nazwę i wersję komponentu:

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

Więc każdy moduł jest wbudowany w katalogu */dist/My -module/1.0.0/

Jednak w samym module potrzebuję uzyskać dostęp do jego wersji. Na przykład w kontrolerze deklaruję zmienną $scope.version = '1.0.0'. Ale obecnie jest on zakodowany w skrypcie kontrolera.


Pierwsze pytanie, czy istnieje sposób moduł może dostać wersję z pliku package.json? Lub, że zadanie pomruczania budujące aplikację zastępuje daną flagę w skryptach przez aktualną wersję modułu? (Na przykład, mogę zadeklarować moja zmienna $scope.version = 'FLAG_VERSION' wiedząc, że podczas kompilacji grunt zastąpi flagę prawą wartości)


Drugie pytanie, jest jakiś składnik grunt, który pozwala oznaczyć aktualną wersję moduł w moim VCS (na przykład SVN), a następnie zwiększyć aktualną wersję? W skrócie, wykonaj wydanie modułu.

Edit: nowe pytanie zadane w tej sprawie, patrz Bump a specific version number on SVN using Grunt


Każda pomoc lub ołów będzie mile widziana!

+1

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

+1

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

+0

Czy pomruk brzucha działa z innym VCS niż GIT? – Eria

Odpowiedz

1

Pierwsze pytanie

dodałem grunt-ng-stałą zadanie (dziękuję @Joe) do mojego grunt kompilacji do generowania kątowe stałe z pliku package.json. Działa świetnie, mogę teraz wprowadzić je do moich dyrektyw i usług. Musiałem dodać nazwę modułu do mojego package.json, ponieważ zadanie ng-constant potrzebuje go do identyfikacji modułu dla wygenerowanych stałych. A nazwa zadeklarowana w package.json była bardziej nazwą projektu niż nazwą modułu.

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

Poniżej wyniku zadania ng stałego:

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

zmieniłem grunt build zadanie Concat tego wygenerowanego skryptu na końcu mojego skryptu aplikacji, zanim minifikacji. Więc teraz mogę używać appInfo w służbie na przykład:

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

Bądź ostrożny! Miałem niespodziankę, stosując to do kilku modułów na tej samej stronie: jeśli stała o tej samej nazwie jest zadeklarowana na dwóch różnych modułach, wartość tego pierwszego zostanie nadpisana przez drugą. AngularJS module.constant() : how to define a constant inside a module only?


Drugie pytanie

Poprosiłem jeszcze jedno pytanie, bardziej precyzyjne w tej sprawie: Bump a specific version number on SVN using Grunt.