Ionic framework 如何增加爱奥尼亚3项目的版本号?
有没有一种快速简便的方法来增加爱奥尼亚3项目的版本号,而不必手动编辑出现版本号的每个文件 我想到的是config.xml、package.json、src/index.html以及项目中出现版本号的所有其他地方 假设我想在对代码进行一些更新后,将版本号从2.3.4增加到2.3.5。我想要点像这样的东西Ionic framework 如何增加爱奥尼亚3项目的版本号?,ionic-framework,Ionic Framework,有没有一种快速简便的方法来增加爱奥尼亚3项目的版本号,而不必手动编辑出现版本号的每个文件 我想到的是config.xml、package.json、src/index.html以及项目中出现版本号的所有其他地方 假设我想在对代码进行一些更新后,将版本号从2.3.4增加到2.3.5。我想要点像这样的东西 $ ionic run version-increment [major][middle][minor] 这将一次编辑所有文件 有没有插件或魔术可以帮我做到这一点?我有一个很大的Ionic/Co
$ ionic run version-increment [major][middle][minor]
这将一次编辑所有文件
有没有插件或魔术可以帮我做到这一点?我有一个很大的Ionic/Cordova项目,唯一需要有版本号的地方就是config.xml。你应该让你的应用程序只使用那里的数字,然后手动更改不是什么大问题。理想情况下,你应该将版本更新与构建过程联系起来。这样,当您启动构建过程时,您可以自动增加应用程序的版本 您可以在Ionic 4中这样做: 步骤1:更新ionic.config.json以提供预构建挂钩: 步骤2:创建build-before.js并添加以下内容: 上面的代码还处理环境文件更改,如果这不是您的目标,您可以跳过它 如果需要更新任何html文件,请参见上面的config.xml示例 此外,上面的代码假定您的版本是semver兼容的模式,也称为n.n.n 或者,在ionic 3中,您可以执行以下操作: 步骤1:更新package.json内的“scripts”属性,以指向生成的步骤脚本: 请注意,我使用的是确保环境变量在以下脚本的上下文中可用: 步骤2:创建env.config.js文件:
你用的是哪种离子型?如果我能帮你找到解决办法的话
{
"name": "morphistic-app",
"type": "angular",
"id": "b8d9b232",
"integrations": {
"cordova": {}
},
"hooks": {
"build:before": "./config/build-before.js"
}
}
const fs = require('fs');
module.exports = (ctx) => {
if (ctx.build && ctx.build.configuration && ctx.build.configuration === "production") {
console.log("production build: performing version bump...");
// update package.json:
let packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf-8').toString());
let versionArray = packageJSON.version.split(".");
versionArray[2] = (parseInt(versionArray[2])+1).toString();
packageJSON.version = versionArray.join(".");
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, "\t"), 'utf-8');
console.log("package.json app version updated");
let prodEnvData = fs.readFileSync(`src/environments/environment.prod.ts`, 'utf-8');
prodEnvData = prodEnvData.replace(/CURRENT_VERSION: ".*"/, `CURRENT_VERSION: "${packageJSON.version}"`);
fs.writeFileSync('src/environments/environment.prod.ts', prodEnvData, 'utf-8');
console.log("environments.prod.ts app version updated");
let devEnvData = fs.readFileSync(`src/environments/environment.dev.ts`, 'utf-8');
devEnvData = devEnvData.replace(/CURRENT_VERSION: ".*"/, `CURRENT_VERSION: "${packageJSON.version}"`);
fs.writeFileSync('src/environments/environment.dev.ts', devEnvData, 'utf-8');
console.log("environments.dev.ts app version updated");
let localEnvData = fs.readFileSync(`src/environments/environment.local.ts`, 'utf-8');
localEnvData = localEnvData.replace(/CURRENT_VERSION: ".*"/, `CURRENT_VERSION: "${packageJSON.version}"`);
fs.writeFileSync('src/environments/environment.local.ts', localEnvData, 'utf-8');
console.log("environments.local.ts app version updated");
let defaultEnvData = fs.readFileSync(`src/environments/environment.ts`, 'utf-8');
defaultEnvData = defaultEnvData.replace(/CURRENT_VERSION: ".*"/, `CURRENT_VERSION: "${packageJSON.version}"`);
fs.writeFileSync('src/environments/environment.ts', defaultEnvData, 'utf-8');
console.log("environments.ts app version updated");
let configXmlData = fs.readFileSync('config.xml', 'utf-8');
configXmlData = configXmlData.replace(/id="com.yourapp.ionic" version=".*"/, `id="com.yourapp.ionic" version="${packageJSON.version}"`);
fs.writeFileSync('config.xml', configXmlData,'utf-8');
console.log("config.xml app version updated");
};
};
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve --non-interactive",
"ionic:serve:before": "cross-env MY_ENV='dev' node ./config/env.config.js",
"ionic:build:before": "cross-env MY_ENV='prod' node ./config/env.config.js",
}
var fs = require('fs');
function readWriteSync() {
let env = process.env.MY_ENV || 'dev';
console.log("updating configuration for: ", env);
// read env data:
let envData = fs.readFileSync(`config/environment.${env}.ts`, 'utf-8');
// read data from package.json:
let packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf-8').toString());
let version;
if (env === "prod") {
let versionArray = packageJSON.version.split(".");
versionArray[2] = (parseInt(versionArray[2])+1).toString();
packageJSON.version = versionArray.join(".");
// write to package.json:
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, "\t"), 'utf-8');
};
version = packageJSON.version;
// replace env data:
envData = envData.replace(/CURRENT_VERSION: ".*"/, `CURRENT_VERSION: "${version}"`);
// write env data
fs.writeFileSync('src/environments/environment.ts', envData, 'utf-8');
// update config.xml:
let configXmlData = fs.readFileSync('config.xml', 'utf-8');
configXmlData = configXmlData.replace(/id="com.yourapp.ionic" version=".*"/, `id="com.yourapp.ionic" version="${version}"`);
fs.writeFileSync('config.xml', configXmlData,'utf-8');
};
readWriteSync();