2017-08-11 13 views
9

użyć następującego polecenia przy budowie jonowej projekt na pulpicieIonic 3 Prod Budowanie wersji numer

jonowy przeglądarka Cordova build --prod

co skutkuje następującym pliku generowane

build/main.js

Jednak chciałbym móc dodać numer wersji do wygenerowanego pliku automatycznie jako część procesu kompilacji. Tak by skończyć z czymś takim

Build/main.js? Version = 1.00

, aby uniknąć konieczności wyczyścić pamięć podręczną przeglądarki po każdej kompilacji prod.

Czy jest flaga dla tego, czy jest to coś, co muszę zrobić ręcznie?

Każda rada byłaby świetna!

EDIT:

Moje rozwiązanie jest na GitHub dla wszystkich zainteresowanych!

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

Odpowiedz

4

Oto kilka rad - Można utworzyć hak Cordova.

Haczyki to skrypty, które chcesz wykonać na różnych etapach procesu budowania. W twoim przypadku patrzysz na skrypt, który zmienia nazwę pliku main.js po zakończeniu zdarzenia kompilacji lub innymi słowy haczyku typu "after_build".

Skrypt zwykle będzie plikiem Node.js, chociaż można również wykonywać inne typy skryptów.

Jeszcze jedno. Ponieważ chcesz ominąć pamięć podręczną, nie będziesz zmieniać nazwy samego pliku. Zamiast tego powinieneś zastąpić odniesienie do "main.js" w tobie "index.html", aby dołączyć losowy lub może rzeczywisty numer wersji.

Wskazałem ci kierunek, ale nie będę podawać łyżką. Sprawdź dokumentację na haczykach Cordova. Są super proste, jeśli zrozumieć JavaScript/węzeł

Coś jak to powinno to zadanie:

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'); 

Jeśli chcesz rzeczywisty numer kompilacji, można czytać swoje config.xml i analizować je, aby uzyskać to jest wartość.

Mam nadzieję, że to pomaga.

+1

Dziękuję bardzo proszę pana. – user2085143

3

pisałem blog dawno

W moim budowy rurociągu mam polecenie, aby ustawić wersja

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

$ (app.versionPrefix) - jest to wersja prefiks, takich jak 0,1.

$ (Build.BuildNumber) - jest zbudowanie wersji

to mam środowiskową plik

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

to mam js skrypt do aktualizacji wersji w środowisku i 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 
} 

UWAGA: Należy zainstalować wtyczkę Zamień w pliku

Następnie w rurociągu budować Używam tego skryptu

node ./replace.build.js 

W twoim przypadku, jeśli potrzebujesz tylko dla przeglądarki możesz skrypt dostroić.