У меня есть проект, созданный и поддерживаемый с помощью algular-cli. Я хочу иметь доступное значение внутри классов проекта номера версии (возможно, из package.json) и увеличенного номера сборки (каждый раз, когда я делаю ng build
или каждый раз, когда ng serve
делает это). Как я могу это достичь? Заранее спасибо.Есть ли способ получить номер сборки и версии внутри класса проекта
2
A
ответ
1
Мне удалось достичь того, чего я хотел. Может быть, это было бы интересно кому-то.
Я подклассы MyAngular2App
из Angular2App
в angular-cli-build.js
и переопределен метод read
из BroccoliPlugin. Он называется каждый раз, когда происходит сборка. Но была и другая проблема: если я обновил app/src/version.ts
, брокколи-наблюдатель вызвал еще один раунд сборки ... Я пробовал разные решения, пытался исключить этот файл из часов и т. Д. Без успеха. Поэтому я решил это более «системным» способом. Переместил файл version.ts
из папки src и сделал символическую ссылку на своем месте. Symlink не обновляется, когда выполняется исходный файл.
angular-cli-build.js
:
'use strict';
var Angular2App = require('angular-cli/lib/broccoli/angular2-app');
var fs = require('fs');
class MyAngular2App extends Angular2App {
constructor(project, inputNode, options) {
super(project, inputNode, options);
}
read(x) {
var _ver = require('./build_version.js');
_ver.build++;
_ver.version = _ver.x + '.' + _ver.y + '.' + _ver.z + '.' + _ver.build;
console.log(" Build version: " + _ver.version);
var fsErr = function (err) {
if (err) {
return console.log(err);
}
};
var ver = "exports.x = '" + _ver.x + "';\n" +
"exports.y = '" + _ver.y + "';\n" +
"exports.z = '" + _ver.z + "';\n" +
"exports.build = " + _ver.build + ";\n";
fs.writeFile("build_version.js", ver, fsErr);
ver = "export const version = {\n major: " + _ver.x + ",\n minor: " + _ver.y + ",\n patch: " + _ver.z + ",\n build: "
+ _ver.build + ",\n text: '" + _ver.version + "'\n};\n";
fs.writeFile("version.ts", ver, fsErr);
return super.read(x);
}
}
module.exports = function (defaults) {
return new MyAngular2App(defaults, {
vendorNpmFiles: [
'systemjs/dist/system-polyfills.js',
'systemjs/dist/system.src.js',
'zone.js/dist/**/*.+(js|js.map)',
'es6-shim/es6-shim.js',
'reflect-metadata/**/*.+(ts|js|js.map)',
'rxjs/**/*.+(js|js.map)',
'@angular/**/*.+(js|js.map)',
'underscore/underscore-min.js',
'stompjs/lib/stomp.min.js',
'moment/moment.js'
]
});
};
build_version.js
exports.x = '0';
exports.y = '7';
exports.z = '3';
exports.build = 2818;
version.ts
:
export const version = {
major: 0,
minor: 7,
patch: 3,
build: 2818,
text: '0.7.3.2818'
};
Я думаю, что текущая версия проекта находится в угловом-cli.json, однако я не знаю, как получить доступ к нему из приложения –