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