2013-10-01 9 views
7

Zarządzam projektem napisanym w angularjs, z domyślną strukturą katalogów, z wyłączeniem katalogu aplikacji, który używa wersji (np. "App/0.0.0 /", "app/0.1.0 /" itp.).Jak używać właściwości "version" w pliku package.json jako katalogu aplikacji w trybie grunt?

Próbuję użyć „wersja” własność grunt za package.json pliku do załadowania prawidłowego katalogu, więc nie będzie musiał ręcznie zmienić ścieżkę aplikacji w gruntfile.js ale z jakiegoś powodu wciąż otrzymuję " Nie mogę GET/"kiedy uruchomię" pomruk serwera ".

Aby lepiej wyjaśnić, oto próbka moich gruntfile.js:

var yeomanConfig = { 
app: 'app/<% pkg.version %>/', 
dist: 'dist' 
... 

grunt.initConfig({ 
    yeoman: yeomanConfig, 
    pkg: grunt.file.readJSON('package.json'), 
... 

Gdybym ręcznie zmienić właściwość aplikacji do „app/0.0.0” działa jak czar więc jestem zgadywanie, że ma to coś wspólnego z szablonem.

Wszelkie pomysły?

Dziękuję bardzo za pomoc.

Edit: Dziękuję za korektę Andreas i Matjaz, ale to nie rozwiązuje problemu i daje ten sam błąd ... To rozwiązuje problem dla mnie, ale bez systemu szablonów:

var pkgVersion = grunt.file.readJSON('package.json').version; 
// configurable paths 
var yeomanConfig = { 
    app: 'app/'+pkgVersion, 
    dist: 'dist' 
}; 

To jest dość brzydkie, ale działa. Mając nadzieję na właściwe rozwiązanie.

+0

Co z '<% = pkg.version%>'? Zwróć uwagę na "=" –

+0

. Dzięki temu przypadkowo upuściłem znak "=", ale nawet po jego usunięciu problem nadal występuje. – onearmfrog

Odpowiedz

3

Aby echo danych używać <%=:

<%= pkg.version %> 
13

Najlepszym sposobem radzenia sobie z wyżej scenariusza jest, że w grunt.initConfig określić package.json

grunt.initConfig({ 
    pkg: grunt.file.readJSON("package.json") 
}) 

Raz powyżej zainicjowany można użyć właściwości pliku package.json w pliku grunt.js.

<%= pkg.version %> 
<%= pkg.homepage %> 
+0

To jest dokładnie to, co robię. System szablonów nie działa na zewnątrz pod adresem grunt.initConfig , dlatego nie można używać <% %>. – onearmfrog

+0

Jeśli to nie działa poza funkcją grunt.initConfig, spróbuj zapisać go w zmiennej i użyć ponownie. – kartikluke

2

przedłużyć appConfig z nazwą i wersją:

var appConfig = { 
    app: require('./bower.json').appPath || 'app', 
    name: require('./package.json').name || 'angularapp', 
    version: require('./package.json').version || '1.0.0', 
    dist: 'dist' 
}; 

Następnie można uzyskać dostęp do zmiennych tak:

<%= yeoman.name %> 
<%= yeoman.version %> 

Dla mnie czystą rozwiązanie z opcjonalnym awaryjnej.

Powiązane problemy