Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 如何增加爱奥尼亚3项目的版本号?_Ionic Framework - Fatal编程技术网

Ionic framework 如何增加爱奥尼亚3项目的版本号?

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

有没有一种快速简便的方法来增加爱奥尼亚3项目的版本号,而不必手动编辑出现版本号的每个文件

我想到的是config.xml、package.json、src/index.html以及项目中出现版本号的所有其他地方

假设我想在对代码进行一些更新后,将版本号从2.3.4增加到2.3.5。我想要点像这样的东西

$ 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();