我正在管理一个用angularjs编写的项目,使用默认目录结构,不包括使用版本控制的app目录(即“app / 0.0.0 /”,“app / 0.1.0 /”等...)
我正在尝试使用grunt的package.json文件的“version”属性来加载正确的 目录,所以我不必手动更改gruntfile.js中的应用程序路径 但出于某种原因,当我运行“grunt服务器”时,我一直得到“无法获取/”。
为了更好地解释这一点,这里是我的gruntfile.js示例:
var yeomanConfig = {
app: 'app/<% pkg.version %>/',
dist: 'dist'
...
grunt.initConfig({
yeoman: yeomanConfig,
pkg: grunt.file.readJSON('package.json'),
...
如果我手动将app属性更改为“app / 0.0.0”,它就像魅力一样 所以我猜这与模板有关。
有什么想法吗?
非常感谢您的帮助。
编辑:感谢您对Andreas和Matjaz的更正,但这并没有解决问题并给出了同样的错误...... 这解决了我的问题,但没有模板系统:
var pkgVersion = grunt.file.readJSON('package.json').version;
// configurable paths
var yeomanConfig = {
app: 'app/'+pkgVersion,
dist: 'dist'
};
这很丑陋但是很有效。希望得到适当的解决方案。
答案 0 :(得分:13)
处理上述场景的最佳方法是,在grunt.initConfig中定义package.json
grunt.initConfig({
pkg: grunt.file.readJSON("package.json")
})
一旦上面初始化,您可以在整个grunt.js文件中使用package.json的属性。
<%= pkg.version %>
<%= pkg.homepage %>
答案 1 :(得分:3)
使用<%=
来回显数据:
<%= pkg.version %>
答案 2 :(得分: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 %>
对我来说是一个带有可选后备的干净解决方案。