Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
Javascript 具有版本号的爱奥尼亚3产品版本_Javascript_Cordova_Ionic3 - Fatal编程技术网

Javascript 具有版本号的爱奥尼亚3产品版本

Javascript 具有版本号的爱奥尼亚3产品版本,javascript,cordova,ionic3,Javascript,Cordova,Ionic3,我在为桌面构建ionic项目时使用以下命令 爱奥尼亚cordova构建浏览器--prod 这将导致生成以下文件 build/main.js 但是,我希望能够将版本号自动添加到生成的文件中,作为构建过程的一部分。所以最终会有类似的结果 build/main.js?版本=1.00 以避免每次产品生成后都需要清除浏览器缓存 是否有此标志,或者是我必须手动执行的操作 任何建议都很好 编辑: 我的解决方案在GitHub上提供给任何感兴趣的人 这里有一些建议-您可以创建cordova挂钩 钩子是您希望在构建

我在为桌面构建ionic项目时使用以下命令

爱奥尼亚cordova构建浏览器--prod

这将导致生成以下文件

build/main.js

但是,我希望能够将版本号自动添加到生成的文件中,作为构建过程的一部分。所以最终会有类似的结果

build/main.js?版本=1.00

以避免每次产品生成后都需要清除浏览器缓存

是否有此标志,或者是我必须手动执行的操作

任何建议都很好

编辑:

我的解决方案在GitHub上提供给任何感兴趣的人


这里有一些建议-您可以创建cordova挂钩

钩子是您希望在构建过程的不同阶段执行的脚本。在您的例子中,您看到的是一个脚本,它在构建事件完成后重命名main.js文件,或者换句话说,是一个“after_build”类型的钩子

脚本通常是Node.js文件,不过也可以执行其他类型的脚本

还有一件事。因为您想绕过缓存,所以不会重命名文件本身。您需要做的是替换“index.html”中对“main.js”的引用,以包含一个随机的或可能是您的实际版本号

我已经给你指明了方向,但我不会用勺子喂你。在cordova挂钩上查找文档。如果您理解Javascript/Node,那么它们非常简单

像这样的事情应该可以完成工作:

var index_orig = fs.readFileSync(path-to-index.html, 'utf8');
var index_new = index_orig.replace("main.js", "main.js?version="+version_num);
fs.writeFileSync(path-to-index.html, index_new, 'utf8');
如果需要实际的内部版本号,可以读取config.xml并对其进行解析以获取其值

希望能有帮助。

我很久以前就写过了

在我的构建管道中,我有设置版本的命令

version "$(app.versionPrefix)$(Build.BuildNumber)"
$(app.versionPrefix)-是前缀版本,如0.1

$(Build.BuildNumber)-是生成版本

然后我有一个环境文件

export const environment = {
    apiUrl: 'https://....',
    production: true,
    version: '0.0.57'                                     
}
然后我有js脚本来更新environment和config.xml中的版本

var replace = require('replace-in-file');
var package = require("./package.json");
var buildVersion = package.version;
const options = {
    files: ['config.xml'],
    from: /" version="([0-9]*.[0-9]*.[0-9]*)"/g,
    to: "\" version=\""+ buildVersion + "\"",
    allowEmptyPaths: false,
};

const optionsEnv = {
     files: ['src/environments/environment.prod.ts'],
    from: /version: '(.*)'/g,
    to: "version: '"+ buildVersion + "' ",
    allowEmptyPaths: false,
};

try {
    let changedFiles = replace.sync(options);
    if (changedFiles == 0) {
        throw "Please make sure that file '" + options.files + "' has \"version: ''\"";
    }
    changedFiles = replace.sync(optionsEnv);
    if (changedFiles == 0) {
        throw "Please make sure that file '" + optionsEnv.files + "' has \"version: ''\"";
    }
    console.log('Build version set: "' + options.to + '"');
}
catch (error) {
    console.error('Error occurred:', error);
    throw error
}
注意:您需要安装插件在文件中替换

然后在构建管道中,我运行这个脚本

node ./replace.build.js

在您的情况下,如果您只需要浏览器,您可以调整脚本。

非常感谢您,先生。