2013-04-19 15 views
5

में नोड.जेएस एनपीएम मॉड्यूल (node_modules) और घोषणाओं को आयात करना मुझे लगता है कि इसके लिए नोड_मोड्यूल निर्देशिका से सीधे मॉड्यूल आयात करना बहुत अच्छा होगा, इसके लिए मैन्युअल रूप से घोषणा फ़ाइल प्रदान करने की आवश्यकता के बिना (हमें लगता है कि घोषणा मॉड्यूल के साथ ही प्रदान की जाती है)। मुझे लगता है कि समस्या निर्भरता है जो घोषणाओं के साथ आती है (मॉड्यूल के सापेक्ष फ़ाइल पथ को हल किया जा सकता है, लेकिन इससे डुप्लीकेट और कंपाइलर इसे संभाल नहीं सकता है)। वर्तमान में नोड मॉड्यूल के साथ काम करना बहुत असुविधाजनक है क्योंकि एनपीएम रिपोजिटरी से सरल इंस्टॉल पर्याप्त नहीं है और हमें घोषणाओं के लिए मैन्युअल रूप से खोजना होगा और उन्हें हमारी परियोजना में प्रदान करना होगा। आइए मान लें कि हमारी परियोजना 10 नोड मॉड्यूल पर निर्भर है (उनमें से सभी घोषणाएं हैं) और एक वर्ष बाद हम उन्हें अपडेट करना चाहते हैं। हमें मैन्युअल रूप से नई घोषणाओं की खोज करनी होगी और मान लें कि हमारे पास इस तरह की लगभग 20 परियोजनाएं हैं (यह एक दुःस्वप्न बन जाएगी)। हो सकता है कि नोड मॉड्यूल से सीधे .ts फ़ाइल आयात करने का विकल्प होना चाहिए?टाइपस्क्रिप्ट

क्या आपके पास कोई सुझाव है?

यह CodePlex से एक फिर से पोस्ट अपनी राय सुनने के लिए ...

+0

कोडप्लेक्स थ्रेड का एक लिंक अच्छा होगा। पीएस: वास्तव में जो भी आप समाधान मांग रहे हैं उसे प्राप्त न करें – basarat

+0

यहां कोडप्लेक्स थ्रेड का एक लिंक है ... https://typescript.codeplex.com/discussions/440670 – jzvelc

उत्तर

1

मुझे नहीं लगता कि नोड मॉड्यूल कभी होते निर्मित टाइपप्रति समर्थन करेगा है। भाषा अभी भी एक 0.x रिलीज है और आधिकारिक तौर पर अल्फा संस्करण के रूप में वर्णित है।

फिर भी टाइपस्क्रिप्ट के लिए कॉन्फ़िगरेशन प्रक्रिया को कम करने के साधन हैं। Github पहले से ही इस तरह के रूप .d.ts फ़ाइलों के विशाल संग्रह शामिल हैं:

https://github.com/borisyankov/DefinitelyTyped या https://github.com/soywiz/typescript-node-definitions

आपको इस उपकरण पर एक नज़र लेने के लिए चाहते हो सकता है: https://github.com/Diullei/tsd। मैंने इसका कभी भी उपयोग नहीं किया है, लेकिन ऐसा लगता है कि यह लगभग वही है जो आप खोज रहे हैं।

इसके अलावा मैंने सुना है कि .d.ts फ़ाइलों का आधिकारिक डेटाबेस योजनाबद्ध है। दुर्भाग्यवश मुझे लिंक नहीं मिला लेकिन यह किसी भी तरह लागू होने से पहले शायद कुछ समय होगा।

+0

टीएसडी अच्छा दिख रहा है और शायद हमें जो चाहिए वह हो ... किसी भी तरह से यह गहरा होगा कि घोषणाओं को node_modules फ़ोल्डर से हल किया जा सकता है। – jzvelc

2

यदि आप ग्रंट-टाइपस्क्रिप्ट का उपयोग करते हैं तो मुझे एक पुल अनुरोध मिला है जो कम से कम मेरे लिए हल करता है। https://github.com/k-maru/grunt-typescript/pull/36

देखें पुल अनुरोध README

node_modules में मॉड्यूल (यानी NPM)

NPM संकुल का उपयोग करने के लिए मानक तरीका एक परिभाषा फ़ाइल कि टाइपप्रति के लिए पैकेज को निर्दिष्ट करता है प्रदान करना है और साथ काम करने से वहां से मॉड्यूल आयात करें।

///<reference path="path/to/mod.d.ts" /> 
import mod = module('mod') 

टाइपप्रति संकलक एक NodeJS require करने के लिए import परिवर्तित कर देंगे।

var mod = require('mod') 

इस रूप में आप NPM स्थापित पैकेज और NPM को सटीक पथ पता करने के लिए काफी किसी भी स्तर पर पैकेज डाल सकते हैं जब आप निर्भरता के कई स्तरों के साथ काम कर रहे हैं की जरूरत है बहुत बोझल है।

घुरघुराना में node_modules विकल्प के साथ

विन्यास आप कर सकते हैं बस import सटीक स्तर जहां पैकेज जब तक यह स्थानीय स्तर पर और नहीं विश्व स्तर पर स्थापित किया गया है NPM द्वारा स्थापित किया गया है पता करने के लिए आवश्यकता के बिना एक NPM पैकेज।

import करने के लिए

अपने टाइपप्रति स्रोत में एक NPM मॉड्यूल ज्यादातर एक भाग्यशाली मौका इस काम करता है की वजह से

import npmModule = module('node_modules/npmModule/foo') 

है। टाइपस्क्रिप्ट कंपाइलर टाइपस्क्रिप्ट परिभाषा फ़ाइल node_modules/npmModule/foo.d.ts पढ़ेगा यदि रूट की तरफ से कुछ बिंदु पर मौजूद है और परिणामी जावास्क्रिप्ट फ़ाइल में npmModule/foo के लिए के लिए आवश्यक हो तो require होगा।