node.js - ساخت فایلهای کتابخانه در پوشه build با استفاده از yarn workspaces و typescript


من یک فضای کاری Yarn همراه با TypeScript به این صورت ایجاد کردم. من سه پوشه دارم که هر کدام package.json خاص خود را دارند

/api
/client
/lib

نکته این است که کد را از کتابخانه بین API و کلاینت به اشتراک بگذاریم. به عنوان مثال در یک فایل API میتوانم انجام دهم

import {User, UserAccount} from '@myproject/lib'

با این مسئله مشکلاتی وجود دارد.

  1. من نیاز دارم هر بار که چیزی را تغییر میدهم، lib را بسازم
  2. فایلهای build در /api به C:/myproject/lib/build/index.js اشاره میکنند

از آنجایی که میخواهم پروژه را با فقط پوش کردن آنچه در /api/build است به هروکو مستقر کنم، این کار شکست میخورد زیرا نمیتواند فایلها را در /lib/build پیدا کند. شاید بتوانم هر دو پوشه build را به هروکو پوش کنم، اما چیزی که امیدوار بودم، یک جادو بود که همه فایلهای /lib/src را به /api/build کامپایل کند. /client من در اکسپو در حال اجرا است که فرض میکنم از چیزی مثل وبپک یا نمیدانم چه استفاده میکند، و به نظر میرسد این کار را انجام میدهد. آیا نیاز دارم از وبپک برای رسیدن به این هدف استفاده کنم یا میتوانم با yarn workspaces و تایپاسکریپت این کار را انجام دهم؟

پاسخ شماره ۱

در tsconfig.json بستههای client و api به دو تنظیمات نیاز دارید، اگر آنها را هنوز ندارید:

  1. در "compilerOptions" مطمئن شوید که "composite": true را دارید
  2. اضافه کنید "references": [{ "path": "relativePathTo/lib" }]

وقتی tsc را اجرا میکنید، آن را با پرچم --build (-b) اجرا کنید، مانند این: tsc -b. این بسته فعال و هر بستهای در references را میسازد. اطلاعات بیشتر درباره ارجاعات پروژه TypeScript.

این مشکل شما را در توسعه حل میکند. بسته به پیکربندی پروژهتان، ممکن است نیاز داشته باشید کارهای بیشتری انجام دهید تا آن را از طریق CI عبور دهید.