如何使用 package.json 中的 "version" 属性作为 grunt 中的应用目录?



我正在管理一个用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 %>

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

最新更新