2015-05-18 12 views
33

में रूट निर्देशिका मेरा प्रश्न एक मौजूदा पुस्तकालय से संबंधित है जिसे मैं एनपीएम मॉड्यूल के रूप में प्रकाशित करना चाहता हूं। लाइब्रेरी पहले से ही उपयोग में है, और वर्तमान में स्थानीय फाइल सिस्टम के माध्यम से require डी है।पैकेज.जेसन

मैं अपने मॉड्यूल की फ़ाइलों की मूल निर्देशिका कैसे निर्दिष्ट कर सकता हूं?

अगर मैं की तरह एक संरचना है:

. 
├── package.json 
├── src 
| ├── js 
| └────── lib 
| └───────── my 
| └───────────── thing.js 
| └───────────── that.js 

मैं कैसे निर्दिष्ट कर सकता है कि मेरे मॉड्यूल की जड़ है, और सुलभ फ़ाइलें src/js/lib/my/ है?

के रूप में बाहरी परियोजना से इस प्रकार मैं उपयोग करना चाहते हैं:,

var thing = require('my/thing'), 
    that = require('my/that'); 

मैं package.json में "files" संपत्ति देखा यह सही रास्ता तय करना है?

+1

मेरा अनुरोध स्वीकार @Drahcir, यदि आप ऐसा करने में सक्षम थे करते हैं? मैं एक ही स्थिति में हूं। –

उत्तर

5

doc के रूप में कहते हैं:

मुख्य क्षेत्र एक मॉड्यूल आईडी अपने कार्यक्रम के लिए प्राथमिक प्रवेश बिंदु है।

तो आपके पास अपने पैकेज.जेसन फ़ाइल में "main": "src/js/lib/my/app.js" जैसे कुछ होगा।

मैं आपको अपने विभिन्न बच्चों को app.js फ़ाइल और module.exports बनाने का सुझाव दूंगा।

module.exports.thing = require('./thing'); 
module.exports.that = require('./that'); 

और इस तरह उन्हें का उपयोग करें: उदाहरण के लिए:

var mylib = require('mylib') 
    , thing = mylib.thing 
    , that = mylib.that; 
+5

मेरा पैकेज पहले से मौजूद पुस्तकालय है, मैं संरचना को बदल नहीं सकता। मुझे बस अपनी लाइब्रेरी को एनपीएमआईफ़ाई करने की आवश्यकता है। – Drahcir

+0

lib.json' में प्रविष्टियां क्यों जोड़ रही हैं lib को नहीं बदल रहा है, लेकिन index.js जोड़ना है? यह स्वीकार्य उत्तर होना चाहिए। –

2

package.json मुख्य रूप से स्थापित करने और निर्भरता का प्रबंधन करने के npm द्वारा इस्तेमाल किया एक फाइल है।

require निर्माण package.json बारे में बहुत कुछ परवाह नहीं करता तो आप जिस तरह से काम करता है require नष्ट करने का यह उपयोग करें और यह मानते हैं कि संकुल जहां require लोड हो रहा है योजना उन्हें उम्मीद नहीं कर रहे हैं बनाने के लिए सक्षम नहीं होगा।

आप शायद तकनीक है कि प्रलेखन कॉल 'वैश्विक फ़ोल्डर से लोड हो रहा है' और NODE_PATH वातावरण चर को परिभाषित इस्तेमाल कर सकते हैं:

https://nodejs.org/api/modules.html पर दस्तावेज और लोड हो रहा है योजना यहाँ देखें।

लेकिन मैं एक और अधिक मानक तरीका करने के लिए छड़ी करने की सलाह: - एक node_modules निर्देशिका में अपने मॉड्यूल डाल - या एक ही निर्देशिका जहाँ आपके app.js या index.js स्थित है में अपने मॉड्यूल पदानुक्रम शुरू

+1

यह एक मॉड्यूल के लिए है जिसे मैं * प्रकाशित करना चाहता हूं * – Drahcir

0

webpack में, आप resolve.alias इस तरह निर्दिष्ट कर सकते हैं:

{ 
    resolve: { 
    alias: { 
     'my': 'my/src' 
    } 
    } 
} 

या आप पैकेज में directions विकल्प निर्दिष्ट कर सकते हैं।json

{ 
    directions: { 
    'lib': 'src/lib' 
    } 
} 
0

एक देशी समाधान के लिए, इस नोड मुद्दा https://github.com/nodejs/node/issues/14970

सुविधा का अनुरोध करने के लिए अगले मुख्य package.json में एक mainDir क्षेत्र से पता चलता है देखते हैं।

अधिक लोगों को है कि वोट, तेजी से/अधिक संभावना यह लागू किया जाएगा

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