2017-08-11 252 views
9

建设项目离子当桌面离子3督促建立与版本号

离子科尔多瓦构建浏览器--prod

这会导致下面的文件生成

我用下面的命令

编译/ main.js

但是我希望能够在生成过程中自动添加版本号到生成的文件中。所以,最终会像

编译/ main.js?版本= 1.00

,以避免需要每督促建立后,清除浏览器缓存。

有没有这个标志,还是我必须手动做的事情?

任何建议将是伟大的!

编辑:

我的解决办法是在GitHub上的人有兴趣!

https://github.com/RichardM99/ionic-3-version-build-file-hook

回答

4

下面是一些建议 - 你可以创建一个科尔多瓦钩。

挂钩是您希望在构建过程的不同阶段执行的脚本。在你的情况下,你正在查看一个脚本,它在构建事件结束后重命名main.js文件,或者换句话说就是'after_build'类型的钩子。

该脚本通常是一个Node.js文件,但您也可以执行其他类型的脚本。

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

我指出你在一个方向,但不会勺羹。查找关于cordova钩子的文档。他们是超级简单,如果你理解JavaScript /节点

这样的事情应该完成这项工作:

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和解析它来获得这是价值。

希望它有帮助。

+1

非常感谢您的先生。 – user2085143

3

我写blog很久以前

在我的构建流水线我有命令集版本

version "$(app.versionPrefix)$(Build.BuildNumber)" 

$(app.versionPrefix) - 是一个前缀版本如0.1。

$(Build.BuildNumber) - 是建立版本

然后,我有环境文件

export const environment = { 
    apiUrl: 'https://....', 
    production: true, 
    version: '0.0.57'          
} 

那么我js脚本来更新环境和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 

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