2015-11-27 15 views
7

मेरा वेब प्रोजेक्ट मुख्य रूप से पायथन है, लेकिन मैं अपने जावास्क्रिप्ट को संकलित और संपीड़ित करने के लिए वेबपैक का उपयोग कर रहा हूं, और यह काफी अच्छी तरह से काम कर रहा है।वेबपैक संकलित केवल तभी

संकलन थोड़ा अच्छा लगता है, लेकिन यह अपेक्षाकृत और स्वीकार्य दोनों है। हालांकि, जब मैं स्थानीय रूप से अपने परीक्षण चलाता हूं, तो यह सुनिश्चित करने के लिए एकमात्र तरीका है कि मेरे पास नवीनतम जावास्क्रिप्ट है इसे संकलित करना है।

यह एक बड़ी समस्या बन जाती है जितना मैं परीक्षण करना चाहता हूं। अधिकांश समय जो कोड मैं पैक कर रहा हूं वह नहीं बदला है, क्योंकि यह वह नहीं है जिस पर मैं काम कर रहा हूं। तो टेस्ट रन के बीच वेबपैक का आउटपुट नहीं बदलेगा। मुझे अभी भी पैकिंग की लागत लगनी है, क्योंकि मैं गारंटी नहीं दे सकता कि यह नहीं बदला है।

क्या वेबपैक देखने के लिए कोई तरीका है कि अंतिम पैक बनाए जाने के बाद से स्रोत फ़ाइलों को बदल दिया गया है, और केवल पैक है जो पहले से मौजूद पैक समान स्रोत फ़ाइलों से नहीं है?

+0

परीक्षण के तहत कोड क्यों नहीं बदला गया है? क्या आप केवल अलगाव में परीक्षण लिख रहे हैं (इसलिए केवल परीक्षण कोड में परिवर्तन)? जब आप असफल परीक्षण लिखते हैं तो आप क्या करते हैं - क्या आपको जावास्क्रिप्ट परीक्षण का परीक्षण करने की आवश्यकता नहीं होगी (और इस प्रकार पुन: संकलित करने की आवश्यकता है)? –

+0

अधिकांश कोड एक Django/पायथन वेब प्रोजेक्ट है, और यही वह कोड है जिसका मैं परीक्षण कर रहा हूं। कुछ परीक्षण मामले हैं जिनके लिए पैक को _exist_ की आवश्यकता होती है, लेकिन जब भी जावास्क्रिप्ट नहीं बदला जाता है तो उन्हें किसी भी को _recompiled_ की आवश्यकता नहीं होती है। –

+0

मैं देखता हूं। जब आप Django परीक्षणों पर काम करते हैं तो एक दृष्टिकोण '' 'वेबपैक - वॉच'' 'हो सकता है। यह जेएस प्रोजेक्ट की प्रारंभिक संकलन का कारण बनता है, फिर केवल जब/जब स्रोत जे बदलता है, तो वेबपैक फिर से इसे पुन: संकलित करेगा। –

उत्तर

2

ऐसा करने के लिए कोई आसान तरीका नहीं है, लेकिन किसी ने प्लगइन लिखा: only-if-changed-webpack-plugin। यह आपकी प्रविष्टि फ़ाइल पर और इसकी सभी निर्भरताओं पर भी पर जांच करता है और कुछ बदलता है तो केवल पुनर्निर्माण करता है।

0
npm install -g build-if-changed  

परियोजना जड़ में फ़ाइल buildconfig बनाएँ:

[cross-env NODE_ENV='production' && webpack -p --progress] <-- your build command in brackets here 
out: ./build/*.js  <-- path where your webpack will put a new file 
src/**/* <-- all sources that will be monitored 

भागो build-if-changed या package.json में जोड़ें। अच्छी तरह से काम! Detailed blog post

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