2013-10-01 33 views
7

我正在管理一個以angularjs編寫的項目,使用默認目錄結構,不包括使用版本控制的應用程序目錄(即「app/0.0.0 /」,「app/0.1.0 /」等..)。如何將package.json中的「version」屬性用作grunt中的應用程序目錄?

我試圖用咕嚕的文件的package.json的「版本」屬性來加載正確的 目錄,這樣我就不必手動更改gruntfile.js 應用程序路徑,但由於某種原因,我不斷收到「無法GET /「當我運行」grunt服務器「。

爲了更好地解釋這一點,這是我gruntfile.js樣本:

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

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

如果我手動更改應用程序屬性設置爲「應用程序/ 0.0.0」它就像一個魅力 所以我猜測這與模板有關。

任何想法?

非常感謝您的幫助。

編輯:謝謝你的校正安德烈亞斯和Matjaz,但這並沒有解決問題,並給出了同樣的錯誤... 這解決了這個問題對我來說,但沒有模板系統:

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

它很醜,但它的作品。希望得到適當的解決方案。

+0

'<%= pkg.version%>'?注意「=」 –

+0

謝謝我不小心丟掉了「=」,但即使在糾正之後,問題仍然存在。 – onearmfrog

回答

3

爲了呼應數據使用<%=

<%= pkg.version %> 
13

的最佳方式來處理上述的情況是,在grunt.initConfig定義的package.json

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

一旦上述初始化,您可以使用整個grunt.js文件中package.json的屬性。

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

這就是我正在做的。 模板系統似乎不在grunt.initConfig之外工作,因此您不能使用<% %>。 – onearmfrog

+0

如果它不在grunt.initConfig之外工作,請嘗試將其存儲在一個變量中並重新使用它。 – kartikluke

2

我的名字和版本擴展了appConfig

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

然後你就可以像這樣訪問的變量:

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

對我來說,一個可選的備用一個乾淨的解決方案。

相關問題