2017-08-11 55 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 

在你的情況,如果你只需要瀏覽器,你可以調整腳本。