我正在管理一个用angularjs编写的项目,使用默认目录结构,不包括使用版本控制的应用程序目录(即。"应用程序/0.0.0/"、"应用程序/0.1.0/"等)。
我正在尝试使用 grunt 的 package.json 文件的"版本"属性来加载正确的目录,这样我就不必手动更改 gruntfile 中的应用程序路径.js但是由于某种原因,当我运行"咕噜咕噜服务器"时,我一直得到"无法获取/"。
为了更好地解释这一点,这是我的gruntfile.js的示例:
var yeomanConfig = {
app: 'app/<% pkg.version %>/',
dist: 'dist'
...
grunt.initConfig({
yeoman: yeomanConfig,
pkg: grunt.file.readJSON('package.json'),
...
如果我手动将应用程序属性更改为"app/0.0.0",它就像一个魅力所以我猜这与模板有关。
有什么想法吗?
非常感谢您的帮助。
编辑:感谢您的更正安德烈亚斯和马贾兹,但这并不能解决问题并给出相同的错误......这为我解决了问题,但没有模板系统:
var pkgVersion = grunt.file.readJSON('package.json').version;
// configurable paths
var yeomanConfig = {
app: 'app/'+pkgVersion,
dist: 'dist'
};
这很丑陋,但它有效。希望有一个适当的解决方案。
处理上述情况的最佳方法是, 在 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'
};
然后,您可以像这样访问变量:
<%= yeoman.name %>
<%= yeoman.version %>
对我来说,一个带有可选回退的干净解决方案。