தமிழ்

டைப்ஸ்கிரிப்ட் மாட்யூல் ரெசல்யூஷனுக்கான ஒரு முழுமையான வழிகாட்டி. இது கிளாசிக் மற்றும் நோட் உத்திகள், baseUrl, paths மற்றும் சிக்கலான திட்டங்களில் இறக்குமதி பாதைகளை நிர்வகிப்பதற்கான சிறந்த நடைமுறைகளை உள்ளடக்கியது.

டைப்ஸ்கிரிப்ட் மாட்யூல் ரெசல்யூஷன்: இறக்குமதி பாதை உத்திகளை எளிதாக்குதல்

டைப்ஸ்கிரிப்டின் மாட்யூல் ரெசல்யூஷன் அமைப்பு, அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய பயன்பாடுகளை உருவாக்குவதில் ஒரு முக்கிய அம்சமாகும். இறக்குமதி பாதைகளின் அடிப்படையில் டைப்ஸ்கிரிப்ட் மாட்யூல்களை எவ்வாறு கண்டறிகிறது என்பதைப் புரிந்துகொள்வது, உங்கள் கோட்பேஸை ஒழுங்கமைக்கவும் பொதுவான தவறுகளைத் தவிர்க்கவும் அவசியமானது. இந்த விரிவான வழிகாட்டி, டைப்ஸ்கிரிப்ட் மாட்யூல் ரெசல்யூஷனின் நுணுக்கங்களை ஆராய்ந்து, கிளாசிக் மற்றும் நோட் மாட்யூல் ரெசல்யூஷன் உத்திகள், tsconfig.json-இல் baseUrl மற்றும் paths-இன் பங்கு, மற்றும் இறக்குமதி பாதைகளை திறம்பட நிர்வகிப்பதற்கான சிறந்த நடைமுறைகளை உள்ளடக்கியது.

மாட்யூல் ரெசல்யூஷன் என்றால் என்ன?

மாட்யூல் ரெசல்யூஷன் என்பது உங்கள் கோடில் உள்ள இறக்குமதி கூற்றின் அடிப்படையில் ஒரு மாட்யூலின் இருப்பிடத்தை டைப்ஸ்கிரிப்ட் கம்பைலர் தீர்மானிக்கும் செயல்முறையாகும். நீங்கள் import { SomeComponent } from './components/SomeComponent'; என்று எழுதும்போது, SomeComponent மாட்யூல் உண்மையில் உங்கள் கோப்பு அமைப்பில் எங்கு உள்ளது என்பதை டைப்ஸ்கிரிப்ட் கண்டுபிடிக்க வேண்டும். இந்த செயல்முறை, டைப்ஸ்கிரிப்ட் மாட்யூல்களைத் தேடும் விதத்தை வரையறுக்கும் விதிகள் மற்றும் உள்ளமைவுகளின் தொகுப்பால் நிர்வகிக்கப்படுகிறது.

தவறான மாட்யூல் ரெசல்யூஷன், கம்பைலேஷன் பிழைகள், ரன்டைம் பிழைகள் மற்றும் திட்டத்தின் கட்டமைப்பைப் புரிந்துகொள்வதில் சிரமத்திற்கு வழிவகுக்கும். எனவே, எந்தவொரு டைப்ஸ்கிரிப்ட் டெவலப்பருக்கும் மாட்யூல் ரெசல்யூஷன் பற்றிய திடமான புரிதல் மிக முக்கியம்.

மாட்யூல் ரெசல்யூஷன் உத்திகள்

டைப்ஸ்கிரிப்ட் இரண்டு முதன்மை மாட்யூல் ரெசல்யூஷன் உத்திகளை வழங்குகிறது, இது tsconfig.json இல் உள்ள moduleResolution கம்பைலர் விருப்பம் மூலம் கட்டமைக்கப்படுகிறது:

கிளாசிக் மாட்யூல் ரெசல்யூஷன்

classic மாட்யூல் ரெசல்யூஷன் உத்தி இரண்டில் எளிமையானது. இது மாட்யூல்களை ஒரு நேரடியான முறையில் தேடுகிறது, இறக்குமதி செய்யும் கோப்பிலிருந்து டைரக்டரி மரத்தில் மேலே செல்கிறது.

இது எப்படி வேலை செய்கிறது:

  1. இறக்குமதி செய்யும் கோப்பைக் கொண்டிருக்கும் டைரக்டரியில் இருந்து தொடங்குகிறது.
  2. டைப்ஸ்கிரிப்ட் குறிப்பிட்ட பெயர் மற்றும் நீட்டிப்புகளுடன் (.ts, .tsx, .d.ts) ஒரு கோப்பைத் தேடுகிறது.
  3. கண்டுபிடிக்கப்படவில்லை எனில், அது பெற்றோர் டைரக்டரிக்கு மேலே சென்று தேடலை மீண்டும் செய்கிறது.
  4. மாட்யூல் கண்டுபிடிக்கப்படும் வரை அல்லது கோப்பு அமைப்பின் ரூட் அடையும் வரை இந்த செயல்முறை தொடர்கிறது.

எடுத்துக்காட்டு:

பின்வரும் திட்ட கட்டமைப்பைக் கவனியுங்கள்:


project/
├── src/
│   ├── components/
│   │   ├── SomeComponent.ts
│   │   └── index.ts
│   └── app.ts
├── tsconfig.json

app.ts கோப்பில் import { SomeComponent } from './components/SomeComponent'; என்ற இறக்குமதி அறிக்கை இருந்தால், classic மாட்யூல் ரெசல்யூஷன் உத்தி:

  1. src டைரக்டரியில் ./components/SomeComponent.ts, ./components/SomeComponent.tsx, அல்லது ./components/SomeComponent.d.ts என்பதைத் தேடும்.
  2. கண்டுபிடிக்கப்படவில்லை எனில், அது பெற்றோர் டைரக்டரிக்கு (திட்டத்தின் ரூட்) மேலே சென்று தேடலை மீண்டும் செய்யும், இது இந்த விஷயத்தில் வெற்றிபெற வாய்ப்பில்லை, ஏனெனில் கூறு src கோப்புறையில் உள்ளது.

வரம்புகள்:

எப்போது பயன்படுத்த வேண்டும்:

classic மாட்யூல் ரெசல்யூஷன் உத்தி பொதுவாக மிகச் சிறிய, எளிமையான டைரக்டரி அமைப்பு மற்றும் வெளிப்புற சார்புகள் இல்லாத திட்டங்களுக்கு மட்டுமே பொருத்தமானது. நவீன டைப்ஸ்கிரிப்ட் திட்டங்கள் எப்போதும் node மாட்யூல் ரெசல்யூஷன் உத்தியைப் பயன்படுத்த வேண்டும்.

நோட் மாட்யூல் ரெசல்யூஷன்

node மாட்யூல் ரெசல்யூஷன் உத்தி Node.js பயன்படுத்தும் மாட்யூல் ரெசல்யூஷன் அல்காரிதத்தைப் பின்பற்றுகிறது. இது Node.js ஐ இலக்காகக் கொண்ட அல்லது npm பேக்கேஜ்களைப் பயன்படுத்தும் திட்டங்களுக்கு விருப்பமான தேர்வாக அமைகிறது, ஏனெனில் இது நிலையான மற்றும் கணிக்கக்கூடிய மாட்யூல் ரெசல்யூஷன் நடத்தையை வழங்குகிறது.

இது எப்படி வேலை செய்கிறது:

node மாட்யூல் ரெசல்யூஷன் உத்தி ஒரு சிக்கலான விதிகளைப் பின்பற்றுகிறது, node_modules-க்குள் தேடுவதற்கு முன்னுரிமை அளிக்கிறது மற்றும் வெவ்வேறு கோப்பு நீட்டிப்புகளைக் கையாளுகிறது:

  1. சார்பு இல்லாத இறக்குமதிகள்: இறக்குமதி பாதை ./, ../, அல்லது / உடன் தொடங்கவில்லை என்றால், டைப்ஸ்கிரிப்ட் அதை node_modules-இல் அமைந்துள்ள ஒரு மாட்யூல் என்று கருதுகிறது. அது பின்வரும் இடங்களில் மாட்யூலைத் தேடும்:
    • தற்போதைய டைரக்டரியில் உள்ள node_modules.
    • பெற்றோர் டைரக்டரியில் உள்ள node_modules.
    • ... மற்றும் கோப்பு அமைப்பின் ரூட் வரை தொடரும்.
  2. சார்பு இறக்குமதிகள்: இறக்குமதி பாதை ./, ../, அல்லது / உடன் தொடங்கினால், டைப்ஸ்கிரிப்ட் அதை ஒரு சார்பு பாதையாகக் கருதி, குறிப்பிட்ட இடத்தில் மாட்யூலைத் தேடுகிறது, பின்வருவனவற்றைக் கருத்தில் கொண்டு:
    • முதலில் குறிப்பிட்ட பெயர் மற்றும் நீட்டிப்புகளுடன் (.ts, .tsx, .d.ts) ஒரு கோப்பைத் தேடும்.
    • கண்டுபிடிக்கப்படவில்லை எனில், அது குறிப்பிட்ட பெயரில் ஒரு டைரக்டரியையும், அந்த டைரக்டரிக்குள் index.ts, index.tsx, அல்லது index.d.ts என்ற கோப்பையும் தேடும் (எ.கா., இறக்குமதி ./components எனில் ./components/index.ts).

எடுத்துக்காட்டு:

lodash நூலகத்தைச் சார்ந்திருக்கும் பின்வரும் திட்ட கட்டமைப்பைக் கவனியுங்கள்:


project/
├── src/
│   ├── utils/
│   │   └── helpers.ts
│   └── app.ts
├── node_modules/
│   └── lodash/
│       └── lodash.js
├── tsconfig.json

app.ts கோப்பில் import * as _ from 'lodash'; என்ற இறக்குமதி அறிக்கை இருந்தால், node மாட்யூல் ரெசல்யூஷன் உத்தி:

  1. lodash ஒரு சார்பு இல்லாத இறக்குமதி என்பதை அங்கீகரிக்கும்.
  2. திட்டத்தின் ரூட்டில் உள்ள node_modules டைரக்டரியில் lodash-ஐத் தேடும்.
  3. node_modules/lodash/lodash.js-இல் lodash மாட்யூலைக் கண்டுபிடிக்கும்.

helpers.ts கோப்பில் import { SomeHelper } from './SomeHelper'; என்ற இறக்குமதி அறிக்கை இருந்தால், node மாட்யூல் ரெசல்யூஷன் உத்தி:

  1. ./SomeHelper ஒரு சார்பு இறக்குமதி என்பதை அங்கீகரிக்கும்.
  2. src/utils டைரக்டரியில் ./SomeHelper.ts, ./SomeHelper.tsx, அல்லது ./SomeHelper.d.ts-ஐத் தேடும்.
  3. அந்த கோப்புகள் எதுவும் இல்லை என்றால், அது SomeHelper என்ற டைரக்டரியைத் தேடி, பின்னர் அந்த டைரக்டரிக்குள் index.ts, index.tsx, அல்லது index.d.ts-ஐத் தேடும்.

நன்மைகள்:

எப்போது பயன்படுத்த வேண்டும்:

node மாட்யூல் ரெசல்யூஷன் உத்தி பெரும்பாலான டைப்ஸ்கிரிப்ட் திட்டங்களுக்கு, குறிப்பாக Node.js ஐ இலக்காகக் கொண்ட அல்லது npm பேக்கேஜ்களைப் பயன்படுத்தும் திட்டங்களுக்குப் பரிந்துரைக்கப்படுகிறது. இது classic உத்தியை விட மிகவும் நெகிழ்வான மற்றும் வலுவான மாட்யூல் ரெசல்யூஷன் அமைப்பை வழங்குகிறது.

tsconfig.json-இல் மாட்யூல் ரெசல்யூஷனை உள்ளமைத்தல்

tsconfig.json கோப்பு உங்கள் டைப்ஸ்கிரிப்ட் திட்டத்திற்கான மைய உள்ளமைவு கோப்பாகும். இது மாட்யூல் ரெசல்யூஷன் உத்தி உட்பட கம்பைலர் விருப்பங்களைக் குறிப்பிடவும், டைப்ஸ்கிரிப்ட் உங்கள் கோடை எவ்வாறு கையாளுகிறது என்பதைத் தனிப்பயனாக்கவும் உங்களை அனுமதிக்கிறது.

node மாட்யூல் ரெசல்யூஷன் உத்தியுடன் ஒரு அடிப்படை tsconfig.json கோப்பு இங்கே உள்ளது:


{
  "compilerOptions": {
    "moduleResolution": "node",
    "target": "es5",
    "module": "commonjs",
    "esModuleInterop": true,
    "strict": true,
    "outDir": "dist",
    "sourceMap": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules"
  ]
}

மாட்யூல் ரெசல்யூஷன் தொடர்பான முக்கிய compilerOptions:

baseUrl மற்றும் paths: இறக்குமதி பாதைகளைக் கட்டுப்படுத்துதல்

baseUrl மற்றும் paths கம்பைலர் விருப்பங்கள் டைப்ஸ்கிரிப்ட் இறக்குமதி பாதைகளை எவ்வாறு தீர்க்கிறது என்பதைக் கட்டுப்படுத்த சக்திவாய்ந்த வழிமுறைகளை வழங்குகின்றன. முழுமையான இறக்குமதிகளைப் பயன்படுத்தவும் மற்றும் தனிப்பயன் பாதை மேப்பிங்குகளை உருவாக்கவும் அனுமதிப்பதன் மூலம் அவை உங்கள் கோடின் வாசிப்புத்திறனையும் பராமரிப்பையும் கணிசமாக மேம்படுத்த முடியும்.

baseUrl

baseUrl விருப்பம் சார்பு இல்லாத மாட்யூல் பெயர்களைத் தீர்ப்பதற்கான அடிப்படை டைரக்டரியைக் குறிப்பிடுகிறது. baseUrl அமைக்கப்படும்போது, டைப்ஸ்கிரிப்ட் தற்போதைய வேலை செய்யும் டைரக்டரிக்கு பதிலாக குறிப்பிட்ட அடிப்படை டைரக்டரிக்கு சார்பாக சார்பு இல்லாத இறக்குமதி பாதைகளைத் தீர்க்கும்.

எடுத்துக்காட்டு:

பின்வரும் திட்ட கட்டமைப்பைக் கவனியுங்கள்:


project/
├── src/
│   ├── components/
│   │   ├── SomeComponent.ts
│   │   └── index.ts
│   └── app.ts
├── tsconfig.json

tsconfig.json பின்வருவனவற்றைக் கொண்டிருந்தால்:


{
  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": "./src"
  }
}

பின்னர், app.ts-இல், நீங்கள் பின்வரும் இறக்குமதி கூற்றைப் பயன்படுத்தலாம்:


import { SomeComponent } from 'components/SomeComponent';

இதற்கு பதிலாக:


import { SomeComponent } from './components/SomeComponent';

டைப்ஸ்கிரிப்ட் baseUrl ஆல் குறிப்பிடப்பட்ட ./src டைரக்டரிக்கு சார்பாக components/SomeComponent-ஐத் தீர்க்கும்.

baseUrl பயன்படுத்துவதன் நன்மைகள்:

paths

paths விருப்பம் மாட்யூல்களுக்கு தனிப்பயன் பாதை மேப்பிங்குகளை உள்ளமைக்க உங்களை அனுமதிக்கிறது. இது டைப்ஸ்கிரிப்ட் இறக்குமதி பாதைகளை எவ்வாறு தீர்க்கிறது என்பதைக் கட்டுப்படுத்த மிகவும் நெகிழ்வான மற்றும் சக்திவாய்ந்த வழியை வழங்குகிறது, மாட்யூல்களுக்கு மாற்றுப்பெயர்களை உருவாக்கவும் மற்றும் இறக்குமதிகளை வெவ்வேறு இடங்களுக்கு திருப்பி விடவும் உதவுகிறது.

paths விருப்பம் ஒரு பொருளாகும், அங்கு ஒவ்வொரு திறவுச்சொல்லும் ஒரு பாதை வடிவத்தைக் குறிக்கிறது, மேலும் ஒவ்வொரு மதிப்பும் பாதை மாற்றீடுகளின் வரிசையாகும். டைப்ஸ்கிரிப்ட் இறக்குமதி பாதையை பாதை வடிவங்களுடன் பொருத்த முயற்சிக்கும், ஒரு பொருத்தம் காணப்பட்டால், இறக்குமதி பாதையை குறிப்பிட்ட மாற்றுப் பாதைகளுடன் மாற்றும்.

எடுத்துக்காட்டு:

பின்வரும் திட்ட கட்டமைப்பைக் கவனியுங்கள்:


project/
├── src/
│   ├── components/
│   │   ├── SomeComponent.ts
│   │   └── index.ts
│   └── app.ts
├── libs/
│   └── my-library.ts
├── tsconfig.json

tsconfig.json பின்வருவனவற்றைக் கொண்டிருந்தால்:


{
  "compilerOptions": {
    "moduleResolution": "node",
    "baseUrl": "./src",
    "paths": {
      "@components/*": ["components/*"],
      "@mylib": ["../libs/my-library.ts"]
    }
  }
}

பின்னர், app.ts-இல், நீங்கள் பின்வரும் இறக்குமதி கூற்றுகளைப் பயன்படுத்தலாம்:


import { SomeComponent } from '@components/SomeComponent';
import { MyLibraryFunction } from '@mylib';

டைப்ஸ்கிரிப்ட் @components/* பாதை மேப்பிங்கின் அடிப்படையில் @components/SomeComponent-ஐ components/SomeComponent-ஆகவும், @mylib பாதை மேப்பிங்கின் அடிப்படையில் @mylib-ஐ ../libs/my-library.ts-ஆகவும் தீர்க்கும்.

paths பயன்படுத்துவதன் நன்மைகள்:

paths-க்கான பொதுவான பயன்பாட்டு வழக்குகள்:

இறக்குமதி பாதைகளை நிர்வகிப்பதற்கான சிறந்த நடைமுறைகள்

அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய டைப்ஸ்கிரிப்ட் பயன்பாடுகளை உருவாக்குவதற்கு இறக்குமதி பாதைகளின் திறமையான மேலாண்மை மிக முக்கியம். பின்பற்ற வேண்டிய சில சிறந்த நடைமுறைகள் இங்கே:

மாட்யூல் ரெசல்யூஷன் சிக்கல்களை சரிசெய்தல்

மாட்யூல் ரெசல்யூஷன் சிக்கல்கள் பிழைத்திருத்தம் செய்வது வெறுப்பாக இருக்கலாம். இங்கே சில பொதுவான சிக்கல்கள் மற்றும் தீர்வுகள் உள்ளன:

பல்வேறு கட்டமைப்புகளில் நிஜ உலக எடுத்துக்காட்டுகள்

டைப்ஸ்கிரிப்ட் மாட்யூல் ரெசல்யூஷனின் கொள்கைகள் பல்வேறு ஜாவாஸ்கிரிப்ட் கட்டமைப்புகளில் பொருந்தும். அவை பொதுவாக எவ்வாறு பயன்படுத்தப்படுகின்றன என்பது இங்கே:

முடிவுரை

டைப்ஸ்கிரிப்டின் மாட்யூல் ரெசல்யூஷன் அமைப்பு உங்கள் கோட்பேஸை ஒழுங்கமைப்பதற்கும் சார்புகளை திறம்பட நிர்வகிப்பதற்கும் ஒரு சக்திவாய்ந்த கருவியாகும். வெவ்வேறு மாட்யூல் ரெசல்யூஷன் உத்திகள், baseUrl மற்றும் paths-இன் பங்கு, மற்றும் இறக்குமதி பாதைகளை நிர்வகிப்பதற்கான சிறந்த நடைமுறைகளைப் புரிந்துகொள்வதன் மூலம், நீங்கள் அளவிடக்கூடிய, பராமரிக்கக்கூடிய மற்றும் படிக்கக்கூடிய டைப்ஸ்கிரிப்ட் பயன்பாடுகளை உருவாக்க முடியும். tsconfig.json-இல் மாட்யூல் ரெசல்யூஷனை சரியாக உள்ளமைப்பது உங்கள் மேம்பாட்டு பணிப்பாய்வுகளை கணிசமாக மேம்படுத்தலாம் மற்றும் பிழைகளின் அபாயத்தைக் குறைக்கலாம். வெவ்வேறு உள்ளமைவுகளுடன் பரிசோதனை செய்து, உங்கள் திட்டத்தின் தேவைகளுக்கு மிகவும் பொருத்தமான அணுகுமுறையைக் கண்டறியவும்.