【问题标题】:Modify json file with gulp使用 gulp 修改 json 文件
【发布时间】:2015-03-11 14:01:43
【问题描述】:

我有一个 package.json 文件:

{
    "name": "Name",
    "version": "0.0.0",
    "author": "Company",
    "description": "A sample project.",
    "private": true
}  

我希望能够使用 gulp 更新版本字段。我将使用环境变量将其设置为 Jenkins 的内部版本号:

var version = process.env.MAJOR +'.' + process.env.MINOR + '.' + process.env.BUILD_NUMBER;

我想要一个将json文件的版本字段更新为版本值的任务:

gulp.task('update-package-build-no', function () {
    pkg.version = version;
});

有什么想法吗?这甚至可以实现吗?我将使用 Angular 读取我的 package.json 文件,以在 about 页面上显示应用程序的版本号。

【问题讨论】:

    标签: json node.js gulp


    【解决方案1】:

    看看gulp-bump。

    你可以使用语法:

    gulp.src("package.json")
      .pipe(bump(process.env.MAJOR + '.' + process.env.MINOR + '.' + process.env.BUILD_NUMBER))
      .pipe(gulp.dest('./'))
    

    顺便说一句 - 这是major.minor.patch-tags+buildNumber。 :-)

    构建元数据可以通过附加一个加号和一系列 紧跟补丁的点分隔标识符或 预发布版本。标识符必须仅包含 ASCII 字母数字和连字符 [0-9A-Za-z-]。标识符不得为空。 在确定版本优先级时应该忽略构建元数据。 因此,只有构建元数据不同的两个版本具有 相同的优先级。示例:1.0.0-alpha+001、1.0.0+20130313144700、 1.0.0-beta+exp.sha.5114f85.

    【讨论】:

    • 这是否会替换 json 的全部内容?我只想更新版本字段?
    • 它只会修改版本字段,但package.json 会在管道输出时被 gulp 覆盖,因此如果您尝试使用两个 gulp 任务编辑 package.json 可能会发现问题同时,如果您不使用像 async 这样的库。
    • 你能解释一下如何/为什么只更新版本字段吗?我没有看到您只针对版本字段?或者这就是凹凸包的目标?
    • gulp.src 将获取 package.json 的内容。这通过管道传送到 bump 函数。 bump 函数可能会反序列化 package.json 内部的 JSON,然后修改版本字段。然后将结果通过管道传送到gulp.dest,后者又将文件写入./package.json。我没有写凹凸库,但这是我得到的印象。你可以view the source code 看到它确实只针对opts.version。
    • 值得一提的是,你可以通过 npm version major.minor.version+buildNumber 完全跳过 gulp,但如果在 repo 中完成,这将标记你的版本。
    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多