2015-10-17 4 views
8

हल करें मैं वेबपैक & जेस्ट के साथ एक प्रोजेक्ट स्थापित करने पर काम कर रहा हूं। फिलहाल वेबपैक कॉन्फ़िगरेशन हल करने से जेस्ट परीक्षणों में जटिलताओं का कारण बनता है। मेरी webpack config में मैं निम्न विकल्प सेट है:वेबपैक की नकल करने के लिए जेस्ट को कॉन्फ़िगर करना रूट को हल करें और उपनाम

import UnknownImg from 'assets/unknown'; 

ऊपर वास्तव में रहता है src/assets/unknown.svg (अपने प्रोजेक्ट जड़ के सापेक्ष):

resolve: { 
    root: [__dirname + "/src/" ], 
    extensions: ['', '.js', '.coffee', '.jsx', '.css', '.scss', '.svg'] 
    } 

यह मेरे साथ परिसंपत्तियों और मॉड्यूल की आवश्यकता होती है सकते हैं।

हालांकि, जब मैं ऊपर की तरह लाइनों के साथ फ़ाइलों के लिए परीक्षण चलाता हूं तो मुझे आवश्यक मॉड्यूल/संपत्ति के पथ को हल करते समय त्रुटियां मिलती हैं।

Error: /Users/byronsm/dev/nerve-center/src/components/organisms/system_status.jsx: Cannot find module 'assets/unknown' from '/Users/byronsm/dev/nerve-center/src/components/organisms'

इस मामले में ऐसा लगता है आयातित मॉड्यूल पथ के एक रिश्तेदार देखने कर किया जाना है। क्या जेस्ट को वेबपैक के समान व्यवहार करने का कोई तरीका है?

उत्तर

20

अब एक समाधान आधिकारिक जेस्ट दस्तावेज़ों में प्रदान किया गया है। Webpack Tutorial देखें।

संक्षेप में, package.json में अपनी हंसी config को modulePaths विकल्प जोड़ने:

"jest": { 
    "modulePaths": ["src"], 
    ... 
} 
+0

यह लिंक टूटा हुआ लगता है। मुझे लगता है कि आप यही कह रहे हैं: https://facebook.github.io/jest/docs/en/configuration.html#modulepaths-array-string – clu

0

अच्छी रात आराम के बाद मैंने इसे फिर से देखा और महसूस किया कि यह एक जेस्ट कॉन्फ़िगरेशन नहीं बल्कि नोड था।

NODE_PATH=src jest 

यह वास्तव में एकाधिक निर्देशिका इसे हल के मुद्दे का समाधान नहीं करता: webpack में resolve.root config के व्यवहार की नकल करने के लिए सबसे अच्छा तरीका है जब jest चल वातावरण चर NODE_PATH समान निर्देशिका करने के लिए सेट करने के लिए है मेरी समस्या इस आलेख ने मुझे समाधान को थोड़ा बेहतर https://gist.github.com/branneman/8048520 समझने में मदद की।

1

Jestpack का उद्देश्य जेस्ट के साथ चलने से पहले अपनी टेस्ट फाइलों को वेबपैक के साथ बनाकर इस समस्या को हल करना है। इसका मतलब है कि आपके वेबपैक कॉन्फ़िगरेशन में कोई भी विशेष मॉड्यूल रिज़ॉल्यूशन नियम या लोडर आपके उत्पादन के निर्माण के समान ही काम करेगा।

+0

"केवल लिंक" के अनुचित लेबलिंग की तरह लगता है, मुझे लगता है कि उनका जवाब लिंक के बिना ही सुगम है। – Krustal

0

मैंने वेबपैक की तरह पथों को हल करने के लिए वेबपैक कॉन्फ़िगरेशन और नोड की आवश्यकता में हुक करने के लिए mimic-webpack लिखा था। मैंने इसे जेस्ट के साथ परीक्षण नहीं किया है, लेकिन इसे किसी भी स्पेक रनर के साथ काम करना चाहिए जो नोड पर चलता है और सरल लोडर का भी समर्थन करेगा।

1

आप जेस्ट 20+ resolver option का उपयोग करें और jest-webpack-resolver

इस पैकेज के साथ प्लग कर सकते हैं परिपक्व (कई दिनों प्रतीत नहीं होता पुराना) लेकिन मेरे लिए नौकरी करता है। इसके अलावा, अभी तक, जेस्ट कॉन्फ़िगरेशन को अलग jest.config.js फ़ाइल में होना चाहिए या सीएलआई के माध्यम से प्रदान किया जाना चाहिए (package.json का समर्थन नहीं करता है)।

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