Npm के माध्यम से स्थापित नोड मॉड्यूल को कैसे संपादित करें?


124

मैं node_swiz मॉड्यूल का उपयोग कर रहा हूं, जो बदले में सत्यापनकर्ता मॉड्यूल का उपयोग करता है।

मैं सत्यापनकर्ता मॉड्यूल में परिवर्तन करना चाहता हूं, लेकिन मैंने मॉड्यूल / निर्भरता को स्थापित करने के लिए एनपीएम इंस्टॉल का उपयोग किया।

क्या मैं केवल नोड_मॉड्यूल्स के अंदर सत्यापनकर्ता मॉड्यूल में बदलाव कर सकता हूं, या क्या नोड_मॉड्यूल निर्भरता फिर से बनाई जा सकती है और जब मैं हरोको या अगली बार एनपीएम इंस्टॉल करता हूं, तो नवीनतम संस्करण मिल जाता है?

संरचना इस तरह दिखती है:

myNodeApplication
  - node_modules
     - swiz
         - node_modules
            - validator [this is the library I want to edit]

सहायता के लिए धन्यवाद!

जवाबों:


242

आप फ़ाइल को सीधे संपादित कर सकते हैं, लेकिन जब भी npm अपडेट होता है, तब इसे अधिलेखित कर दिया जाएगा, सबसे अच्छी बात यह है कि सीधे स्रोत पर जाएं।

यदि परिवर्तन समग्र मॉड्यूल की कार्यक्षमता को प्रभावित करते हैं, और दूसरों के लिए उपयोगी हो सकते हैं, तो आप जीथब पर मूल स्रोत में योगदान करना और परिवर्तन को लागू करने के लिए देख सकते हैं।

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

गिथब से सीधे इंस्टॉल करने के लिए, निम्नलिखित कमांड का उपयोग करें:

npm install https://github.com/<username>/<repository>/tarball/master


2
धन्यवाद! ठीक यही मैं जानना चाहता था। इसके अलावा, इसे पढ़ने वाले अन्य लोगों के लिए ... मैं पैकेज में अपने गिथब पर मॉड्यूल को शामिल करना चाहता था।
जसन

22
फोर्क करने से पहले मैं इसे स्थानीय प्रणाली में बदल रहा हूं, लेकिन परिवर्तन प्रभावित नहीं होता है। किसी भी जावास्क्रिप्ट फ़ाइल को बदलना जो नोड_मॉड्यूल्स / पैकेज_नाम / लिब / फाइल_नाम.जेएस को प्रभावित करता है?
जिज्ञासु

1
बस एक नोट, निश्चित नहीं कि अगर कुछ बदल गया है, लेकिन व्यक्तिगत रूप से मुझे Git URL को git के रूप में निर्दिष्ट करना होगा: //github.com/ <user> / <package> .git "
क्रेग

5
@JohnDevor अनुकूलित मॉड्यूल को स्थापित करने के बजाय, "npm लिंक" कमांड का उपयोग केवल अपने फ़ोल्डर में सिम्पल
Venryx

3
यह पता लगा, मैं फ़ोल्डर में नेविगेट करने के लिए था /node_modulesऔर चलाने के लिए npm installतो सब ठीक है!
एडम मोइसा

6

आप नोड मॉड्यूल्स में परिवर्तन करने और बनाए रखने के लिए पैच-पैकेज का उपयोग कर सकते हैं ।

यह पहले पैकेज के अंदर परिवर्तन करने node_modulesऔर फिर निम्नलिखित कमांड को चलाने के द्वारा किया जा सकता है , <package name>जिस पैकेज के नाम के साथ आपने अभी-अभी परिवर्तन किए हैं।

npx patch-package <package name>

पैच-पैकेज तब patchesआपके परिवर्तनों का प्रतिनिधित्व करते हुए, एक फ़ाइल के साथ एक फ़ोल्डर बनाएगा । इस फ़ाइल को फिर गिट में डाला जा सकता है, और पैच को बाद में npx patch-package(बिना किसी तर्क के) चलाकर बहाल किया जा सकता है ।

वैकल्पिक कदम:

जब आप "npm इंस्टॉल" निष्पादित करते हैं तो निर्भरता को स्वचालित रूप से पैच करने के लिए अपने पैकेज के स्क्रिप्ट अनुभाग में निम्नलिखित जोड़ें।

"postinstall": "npx patch-package" 

1
बहुत अच्छा समाधान जो किसी भी मुद्दे के बिना मेरे लिए काम किया।
ヨ ン ソ

यह वास्ताव में अच्छा है! FYI करें: मुझे "पोस्ट-इंस्टॉलेशन" के बजाय "प्रीइंस्टॉलेशन" का उपयोग करना पड़ा क्योंकि मेरा पैच निर्भरता की स्थापना रद्द स्क्रिप्ट के लिए था। आप इसे कैसे कार्यान्वित करेंगे यदि आपके पास अन्य पैच हैं जिन्हें पोस्ट-इंस्टॉलेशन चरण में लागू करने की आवश्यकता है?
सुपरोल

1
अविश्वसनीय जवाब, मुझे शुद्ध करने के लिए तैनात करने से पहले एक डिप में संशोधन करने की आवश्यकता थी। प्रीइंस्टॉलेशन 'npx पैच-पैकेज' मैजिक टिकट था। उचित छवि अब वेबसाइट पर दिखाई गई है।
TheBetterJORT

1

मैं एक नया मॉड्यूल प्रकाशित नहीं करना चाहता था और मैं भी npm installअपने परिवर्तनों को लिखना नहीं चाहता था । मुझे इन दोनों मुद्दों का हल मिल गया, लेकिन शायद @ Sdedelbrock की सलाह लेना बेहतर होगा। लेकिन अगर आप इसे करना चाहते हैं, तो यहां बताया गया है:

  1. अपनी package.jsonनिर्भरता को हटाने के लिए अपनी फ़ाइल को संपादित करें जिसे आप संपादित करना चाहते हैं।
  2. अपने प्रोजेक्ट में जाएं /node_modulesऔर अपने रिपॉजिटरी में फोल्डर को कहीं और ले जाएं जो कमिट हो। तो अब /node_modules/dependencyहै/dependency
  3. cd निर्भरता निर्देशिका और प्रकार में npm link
  4. cdअपनी प्रोजेक्ट डायरेक्टरी की जड़ में और npm link dependency यह महत्वपूर्ण है कि आप ऐसा बाहर /node_modulesऔर के बीच करें/dependency

यदि सब कुछ काम करता है, तो अब आपके पास एक सिमिलिंक होना चाहिए जो अंदर बनाया गया था /node_modules/dependency। अब आप अपने प्रोजेक्ट को यह देखने के लिए चला सकते हैं कि यह काम करता है या नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.