2015-05-11 6 views
9

मेरे package.json webpack और कुछ लोडर शामिल करने के लिए: जब मैं webpack चलाने यह मेरे रास्ते में नहीं है के रूप में पाया तो यह दिखाई नहीं देताकैसे वैश्विक webpack स्थापित सामंजस्य और स्थानीय लोडर

"devDependencies": { 
    "babel-core": "^5.2.17", 
    "babel-loader": "^5.0.0", 
    "jsx-loader": "^0.13.2", 
    "node-libs-browser": "^0.5.0", 
    "webpack": "^1.9.4" 
} 

। मैं इसे विश्व स्तर पर स्थापित npm install -g webpack तो द्विआधारी मेरी राह में प्रकट होता है, लेकिन फिर यह लोडर मॉड्यूल है कि ./node_modules है कि यह मेरी निर्भरता पेड़ पर कार्रवाई करने की जरूरत है में स्थापित किए गए थे नहीं मिल सकता है:

$ webpack --progress --colors --watch 
10% 0/1 build modules/usr/local/lib/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:206 
       throw e; 
        ^
Error: Cannot find module 'jstransform/simple'``` 

क्या पसंदीदा समाधान है यहाँ?

मैं अपने लोडर विश्व स्तर पर स्थापित कर सकते हैं, लेकिन मैं, मुद्दों पार परियोजना की वजह से है कि

मैं webpack node_modules से बाहर चलाने के लिए (यकीन है कि कैसे ईमानदार होना नहीं की कोशिश कर सकते पसंद के लिए $PATH में जोड़ने नहीं है प्रत्येक प्रोजेक्ट?)

या मैं अपने वैश्विक वेबपैक को मेरे node_modules फ़ोल्डर में एक्सेस करने का प्रयास कर सकता हूं, जो हैकी भी लगता है।

क्या मैंने कुछ गलत किया है, या क्या इस समस्या के आसपास एक बेहतर समुदाय-अनुमोदित तरीका है?

उत्तर

19

मेरे पास एक ब्लॉग पोस्ट है जिसे Managing Per-Project Interpreters and the PATH कहा जाता है जो इसके लिए मेरी पद्धति का विवरण देता है। मैं आपके कुछ महत्वपूर्ण प्रश्नों को हल करने के लिए यहां सारांशित करूंगा।

यहां पसंदीदा समाधान क्या है?

कभी भी (वास्तव में, सचमुच कभी नहीं) npm -g का उपयोग करें। बस अपनी परियोजना के भीतर सामान्य रूप से स्थापित करें। पाथ को उचित रूप से सेट करने के लिए अपने खोल का प्रयोग करें। मैं ऊपर दिए गए ब्लॉग पोस्ट में विस्तृत रूप से इसे करने के लिए zsh का उपयोग करता हूं, इसलिए यदि ./node_modules/.bin वाली परियोजना में cd है, तो यह स्वचालित रूप से मेरे पाथ पर डाल दिया जाता है।

अन्य तरीके हैं जो alias webpack="./node_modules/.bin/webpack" जैसे उपनाम बनाने सहित काम करते हैं। लेकिन वास्तव में बस अपने पैथ को बदलना गले लगाओ और आपके पास सबसे सामंजस्यपूर्ण दीर्घकालिक अनुभव होगा। मल्टीप्रोजेक्ट डेवलपर की ज़रूरतें पुराने स्कूल यूनिक्स द्वारा नहीं मिलती हैं, सबकुछ या तो बिन या/यूएसआर/बिन में रहता है।

  • आप NPM लिपियों, NPM स्वचालित रूप से उन लिपियों, ताकि आप केवल कमांड चलाने कर सकते हैं और वे मिल जाएगा के दौरान अपने पथ में ./node_modules/.bin भी शामिल है ("स्क्रिप्ट" में अपने package.json कुंजी) का उपयोग करते हैं। तो एनपीएम स्क्रिप्ट का उपयोग करें और यदि आप शैल स्क्रिप्ट का उपयोग करते हैं जो export PATH="$PWD/node_modules/.bin:$PATH" करने के लिए एक आसान जगह है।
4

आपकी निर्भरताओं में परिभाषित संकुल के साथ आने वाली कोई भी बाइनरी ./node_modules/.bin के तहत रखी जानी चाहिए, इसलिए आपको वहां पहुंचने में सक्षम होना चाहिए, यानी ./node_modules/.bin/webpack

वैकल्पिक रूप से, आप अपने package.json के अंदर एक स्क्रिप्ट को परिभाषित कर सकते हैं, जो आपको npm run webpack जैसे उपनाम के रूप में कुछ चलाने की अनुमति देगा।

+0

इसमें पर्याप्त झंडे हैं कि यह किसी भी तरह से एनएमपी स्क्रिप्ट परिभाषा का उपयोग करने के लिए एर्गोनोमिक महसूस करता है, इसलिए मुझे वह दूसरा विकल्प पसंद है। अगर कोई है तो बेहतर जवाब के लिए मैं कुछ मिनट इंतजार करूंगा ;-) –

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