निम्नलिखित निर्देशिका संरचना के साथ एक सरल टाइपप्रति परियोजना पर विचार करें:बेसयूआरएल का उपयोग कर मॉड्यूल आयात करते समय पूर्ण पथ को हल करने के लिए टीएससी कैसे प्राप्त करें?
| package.json
| tsconfig.json
|
\---src
| app.ts
|
\---foobar
Foo.ts
Bar.ts
tsconfig.json
./src/
baseUrl
होना करने के लिए कॉन्फ़िगर किया गया है।
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outDir": "./dist/",
"baseUrl": "./src/"
},
"include": [
"./src/**/*"
],
"exclude": [
"node_modules"
]
}
अब हम Bar.ts
में Foo
आयात करना चाहते हैं लगता है। मैं समझता हूँ कि baseUrl
की स्थापना करके, अब हम पूर्ण पथ का उपयोग कर सकते मॉड्यूल
import { Foo } from 'foobar/Foo'
आयात करने के लिए के रूप में संबंधित पथ
import { Foo } from './Foo'
तो मेरी समझ सही है, टाइपप्रति संकलक में सक्षम होना चाहिए करने का विरोध किया है Bar.ts
संकलित करते समय foobar/Foo
से ./Foo
को स्वचालित रूप से हल करें।
import { Foo } from 'foobar/Foo';
export class Bar {
foo: Foo;
constructor(num: number) {
this.foo = new Foo(num);
}
}
रनिंग tsc
त्रुटियों के बिना संकलित करता है। फिर भी, जब हम वास्तव में संकलित Bar.js
देखते हैं, तो हम देखेंगे कि पथ सही ढंग से हल नहीं किया गया है, जो हमें प्रदान करेगा यदि हम इसे चलाने के लिए मॉड्यूल त्रुटि नहीं पा रहे हैं।
"use strict";
const Foo_1 = require("foobar/Foo");
class Bar {
constructor(num) {
this.foo = new Foo_1.Foo(num);
}
}
exports.Bar = Bar;
तो मेरे सवाल है: मैं tsc
सही ढंग से पूर्ण पथ को हल करने जब baseUrl
का उपयोग कर मॉड्यूल आयात करना कैसे मिल सकता है? या यदि ऐसा कुछ नहीं किया जा सकता है, तो baseUrl
का उद्देश्य क्या है?
धन्यवाद!तो दूसरे शब्दों में, 'tsc' रिश्तेदार पथ पर पूर्ण पथ को परिवर्तित करने के लिए ज़िम्मेदार नहीं है, और मुझे इसके बजाय इसे हल करने के लिए मॉड्यूल लोडर को कॉन्फ़िगर करना है? यदि ऐसा है, तो क्या इसके बजाय सापेक्ष पथ में कनवर्ट करने के लिए 'tsc' प्राप्त करने का कोई तरीका है? – Zsw
नहीं, जहां तक मुझे पता है, 'tsc' आपके लिए पथ परिवर्तित नहीं करेगा। यदि संभव हो, तो अपने 'आयात' कथन में पथों का उपयोग करना आसान होगा जो आपके मॉड्यूल लोडर spec/config के अनुरूप हैं, और फिर तदनुसार मॉड्यूल नामों को हल करने के लिए' tsc' को बताने के लिए विभिन्न कंपाइलर विकल्पों का उपयोग करें। – Seamus
@Zsw एक विकल्प के रूप में, "आउटफाइल" कंपाइलर विकल्प चेकआउट करें। यह मॉड्यूल को एक आउटपुट में जोड़ देगा: https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in- टाइपस्क्रिप्ट#concatenate-amd-and-system-modules-with---outfile – Seamus