如何使用package.json中的“version”属性作为grunt中的应用程序目录?

我正在用angularjspipe理一个项目,使用默认的目录结构,不包括使用版本控制的app目录(例如“app / 0.0.0 /”,“app / 0.1.0 /”等等)。

我试图使用grunt的package.json文件的“版本”属性来加载正确的目录,所以我将不必手动更改gruntfile.js中的应用程序path,但由于某种原因,我不断得到“无法GET /”,当我运行“grunt服务器”。

为了更好地解释这一点,下面是我的gruntfile.js的示例:

var yeomanConfig = { app: 'app/<% pkg.version %>/', dist: 'dist' ... grunt.initConfig({ yeoman: yeomanConfig, pkg: grunt.file.readJSON('package.json'), ... 

如果我手动将应用程序属性更改为“app / 0.0.0”,它就像一个魅力,所以我猜这是与模板有关。

有任何想法吗?

非常感谢你的帮助。

编辑:感谢您的更正安德烈亚斯和Matjaz,但这并没有解决问题,并给出了同样的错误…这解决了我的问题,但没有模板系统:

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

这是相当丑陋的,但它的作品。 希望得到一个合适的解决scheme。

处理上述情况的最好方法是,在grunt.initConfig中定义package.json

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

一旦初始化完成,你可以在整个grunt.js文件中使用package.json的属性。

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

要回显数据使用<%=

 <%= pkg.version %> 

我使用名称和版本扩展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' }; 

然后你可以像这样访问variables:

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

对我来说,一个干净的解决scheme,可选的后备。