angular - وارد کردن Typescript با استفاده از مسیر از یک ریشه


آیا راه سادهای برای تنظیم وجود دارد به طوری که بتوانم از یک نقطه ریشهای import کنم؟

مثال:

- module1
   \- file1.ts
- module2
   \- file2.ts

در فایل2 میخواهم import فایل1 را انجام دهم

import { foo } from '../module1/file1'

چیزی که من دوست دارم به جای آن انجام دهم چیزی شبیه به این است:

import { foo } from 'src/module1/file1'

Angular2 به نوعی از این استفاده میکند (ببینید https://github.com/angular/angular/blob/master/modules/angular2/src/core/compiler/compiler.ts). من به فرایند ساخت آنها نگاه کردم، اما آنقدر پیچیده است که مطمئن نیستم چگونه این را فعال کردهاند.

پاسخ شماره ۱

تمام ایمپورتهای ES6 نسبی هستند، Angular2 از systemjs برای مدیریت تمام ایمپورتها/اکسپورتها استفاده میکند. و در پیکربندی systemjs میتوانید یک نقشه تعریف کنید. (من به آن سمت نمیروم)

شما باید به خاطر بسپارید که واردات در ES6 فقط بارگذاری فایلهای جاوااسکریپت است، بنابراین اگر src ریشه شما باشد، باید بتوانید به سادگی از /src/module1/files وارد کنید

پاسخ شماره ۲

https://www.npmjs.com/package/app-module-path به نظر میرسد بهترین راهحل برای نود باشد.

بهروزرسانی :

من از آن اینطور استفاده میکنم

root
  \- module1
  |  \- file1.ts
  \- module2
  |  \- file2.ts
  \- main.ts

main.ts نقطه ورود برنامه است، و این دو خط اول آن هستند:

import * as path from 'path';

require('app-module-path').addPath(path.resolve(__dirname, '..'));

سپس از module2/file2.ts میتوانم این کار را انجام دهم:

import { Stuff } from 'root/module1/file1';