جاوااسکریپت - کتابخانه تایپاسکریپت: مخفی کردن صادرات داخلی
من در حال ساخت یک کتابخانه در تایپاسکریپت هستم که از طریق npm منتشر میشود.
در فایل index.ts، که نقطه شروع کتابخانه است، تمامی کلاسها و شمارشهای عمومی صادر میشوند.
import { MyClass } from './internal/my-class'
import { MyEnum } from './internal/my-enum'
export { MyClass, MyEnum }
این خوب کار میکند، اما متوجه شدم که کاربران همچنین قادرند توابع/کلاسها و غیره داخلی را نیز با استفاده از مسیر مستقیم فایل وارد کنند.
// in a project that installed my library as an npm dependency
import { InternalClass } from 'my-lib/dist/internal/internal-class'
راهی برای جلوگیری از این وجود دارد؟
من نیاز دارم InternalClass را «صادر» کنم زیرا آن را در سرتاسر کتابخانهام وارد و استفاده میکنم، اما نمیخواهم آن را به صورت عمومی آشکار کنم. من سعی کردم از namespace ها استفاده کنم، اما واقعاً نتوانستم آن را درست کار کنم.
پاسخ شماره ۱
شما باید فلگ stripInternal را در tsconfig.json خود (یا از خط فرمان) روی true تنظیم کنید و از کامنتهای tsdoc با تگ @internal استفاده کنید.
// internal/my_file.ts
/** @internal */
export function myInternalFunction() {}
توجه داشته باشید که این عملکرد را از اعلانهای نوع حذف میکند، بنابراین در ویرایشگرها تکمیل خودکار انجام نخواهد شد، اما اگر واقعاً نیاز دارید جزئیات داخلی را مخفی کنید، پیشنهاد میکنم کد خود را با استفاده از Rollup و افزونه TypeScript بستهبندی کنید.
پاسخ شماره ۲
استفاده از microbundle یا ابزارهای مشابه برای بستهبندی پکیج خود. باید یک فایل تولید کند و کاربران شما فقط بتوانند از آن نقطه ورود وارد کنند.
