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

Posted

技术标签:

【中文标题】如何使用 package.json 中的“version”属性作为 grunt 中的应用程序目录?【英文标题】:How do I use the "version" property in package.json as the app's directory in grunt? 【发布时间】:2013-10-07 13:05:27 【问题描述】:

我正在管理一个用 angularjs 编写的项目,具有默认目录结构,不包括使用版本控制的 app 目录(即“app/0.0.0/”、“app/0.1.0/”等) .

我正在尝试使用 grunt 的 package.json 文件的“版本”属性来加载正确的 目录,所以我不必手动更改 gruntfile.js 中的应用程序路径 但由于某种原因,当我运行“grunt server”时,我不断收到“Cannot GET /”。

为了更好地解释这一点,这是我的 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'
;

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

【问题讨论】:

&lt;%= pkg.version %&gt; 怎么样?注意“=” 谢谢,我不小心把“=”去掉了,但即使在更正之后,问题仍然存在。 【参考方案1】:

要回显数据,请使用&lt;%=:

<%= pkg.version %>

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

这正是我正在做的。模板系统似乎无法在 grunt.initConfig 之外工作,因此您不能使用 。 如果它不能在 grunt.initConfig 之外工作,请尝试将其存储在一个变量中并重用它。【参考方案3】:

我用名称和版本扩展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 %>

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

【讨论】:

以上是关于如何使用 package.json 中的“version”属性作为 grunt 中的应用程序目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jenkins 自动化 package.json 中的版本号

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

如何在我的反应项目中使用 package.json 依赖项中的系统变量?

如何使用 package.json 中的 typesVersions 字段为较新的 typescript 版本提供更严格的类型?

如何在 Windows 的 package.json 中的 NPM 脚本中关闭终端?

如何更新 Package.json 中的依赖项