7

我正在管理一个用 angularjs 编写的项目,具有默认目录结构,不包括使用版本控制的 app 目录(即“app/0.0.0/”、“app/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”,它就像一个魅力,所以我猜这与模板有关。

有任何想法吗?

非常感谢你的帮助。

编辑:感谢您的更正 Andreas 和 Matjaz,但这并不能解决问题并给出相同的错误......这为我解决了问题,但没有模板系统:

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

这很丑陋,但它有效。希望有合适的解决方案。

4

3 回答 3

14

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

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

完成上述初始化后,您可以在整个 grunt.js 文件中使用 package.json 的属性。

<%= pkg.version %>
<%= pkg.homepage %>
于 2013-10-29T10:49:24.327 回答
3

要回显数据,请使用<%=

<%= pkg.version %>
于 2013-10-01T12:40:19.043 回答
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 %>

对我来说,一个带有可选后备的干净解决方案。

于 2015-05-29T19:41:34.097 回答