【发布时间】:2016-07-20 06:40:47
【问题描述】:
我想用另一个字符串替换 javascript 文件 (myConstantsFile.js) 中指示版本号的字符串。因此,例如,我的版本号如下所示:“01.11.15”,在myConstantsFile.js 中这样写,其他常量:
.constant('productVersion', '1.11.15');
现在,我的任务是这样的:
gulp.task('increment-version', function(){
gulp.src(['./somedir/myConstantsFile.js'])
.pipe(replace(/'productVersion', '(.*)'/g, '99.99.99'))
.pipe(gulp.dest('./somedir/'));
});
如您所见,我使用的是常量,而不是运行 incrementation code,它看起来像这样:
var numberString = '0.0.1';
var versionParts = numberString.split('.');
var vArray = {
vMajor : versionParts[0],
vMinor : versionParts[1],
vPatch : versionParts[2]
}
vArray.vPatch = parseFloat(vArray.vPatch) + 1;
var periodString = ".";
var newVersionNumberString = vArray.vMajor + periodString +
vArray.vMinor+ periodString +
vArray.vPatch;
我需要:
- 一种通过文件通过正则表达式选择当前版本号的方法。
- 要知道我可以将逻辑放在最后一个代码块中的什么位置,以增加数字并构建新字符串。
【问题讨论】:
-
gulp-bump 怎么样? npmjs.com/package/gulp-bump
-
根据过去的经验,将您的内部版本号保存在自己的文件中(在这种情况下,甚至可能是 JSON)。当代码文件中的 sed 替换最终导致问题时,几乎不可能弄清楚。
-
@cl3m 看起来不错,我正在查看功能。我的主要问题是通过正则表达式对数据进行基本选择以使用以及放置我的变量/函数的位置。这是我第一次用 gulp 做任何事情,除了运行 browser-sync 等等。 ssube - 这是个好主意,但问题是需要从中提取角度常数。
-
我们用 grunt 做了一个非常相似的事情。版本存储在 package.json 中,并在 grunt 任务文件中递增。 不确定这如何转化为 Gulp。 我会说这已被证明有些脆弱,因为多个开发人员都可以在构建上执行增量,并且因为 package.json(在我们的例子中)不受版本控制,它很容易不同步。所以 - 要点是:版本控制你的内部版本号来源。
-
@Bosworth99 注意。整个过程很痛苦,我们在构建期间也在 SQL 中增加版本号,但不是通过 gulp,然后检查版本是否对齐,以查看更新后用户是否刷新了浏览器(以防 API 调用发生更改或其他情况)。我还没有看到一个合适的方法来做到这一点,但这完全是一个不同的问题。
标签: javascript angularjs gulp build-process