2017-08-11 9 views
9

मैं निम्न आदेश का उपयोग जब डेस्कटॉप के लिए एक आयनिक परियोजना के निर्माणआयोनिक 3 प्रॉड संस्करण संख्या के साथ बनाएँ

आयनिक कॉर्डोबा निर्माण ब्राउज़र --prod

निम्नलिखित में से कौन फ़ाइल में परिणाम उत्पन्न किया जा रहा

निर्माण/main.js

हालांकि मैं निर्माण प्रक्रिया के हिस्से के रूप में स्वचालित रूप से जेनरेट की गई फ़ाइल में संस्करण संख्या जोड़ने में सक्षम होना चाहता हूं। तो 1,00

तरह

निर्माण/main.js? संस्करण कुछ के साथ खत्म हो जाएगा = के रूप में हर prod निर्माण के बाद ब्राउज़र संचय साफ करने की जरूरत से बचने के लिए।

क्या इसके लिए कोई झंडा है, या यह कुछ है जो मुझे मैन्युअल रूप से करना चाहिए?

कोई सलाह बहुत अच्छी होगी!

संपादित करें:

मेरे समाधान रुचि किसी के लिए GitHub पर है!

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

उत्तर

4

यहाँ कुछ सलाह है - आप एक कॉर्डोबा हुक बना सकते हैं।

हुक स्क्रिप्ट हैं जिन्हें आप निर्माण प्रक्रिया के विभिन्न चरणों में निष्पादित करना चाहते हैं। आपके मामले में, आप एक ऐसी स्क्रिप्ट देख रहे हैं जो बिल्ड इवेंट समाप्त होने के बाद main.js फ़ाइल का नाम बदलती है, या दूसरे शब्दों में 'after_build' प्रकार हुक।

स्क्रिप्ट आमतौर पर एक नोड.जेएस फ़ाइल होगी, हालांकि आपके पास अन्य प्रकार की स्क्रिप्ट भी निष्पादित की जा सकती हैं।

एक और बात। चूंकि आप आसपास के कैश प्राप्त करना चाहते हैं, इसलिए आप फ़ाइल का नाम बदल नहीं पाएंगे। आप जो करना चाहते हैं वह "index.html" में संदर्भ को "index.html" में यादृच्छिक या शायद आपका वास्तविक संस्करण संख्या शामिल करने के लिए है।

मैंने आपको एक दिशा में इंगित किया है, लेकिन चम्मच नहीं होगा। कॉर्डोवा हुक पर दस्तावेज़ीकरण देखें। वे सुपर आसान है अगर आप जावास्क्रिप्ट/नोड

इस तरह कुछ काम किया जाना चाहिए समझते हैं:

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'          
} 

तब मैं पर्यावरण और 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 

चला रहा हूँ आपके मामले में अगर आप ब्राउज़र आप धुन स्क्रिप्ट कर सकते हैं के लिए केवल जरूरत है।

संबंधित मुद्दे