javascript - อนุญาตให้ส่งออกโมดูล Client, Server และ Common แยกกันในแพ็กเกจ typescript npm เดียว
ฉันมีโปรเจกต์ (ขอเรียกว่า FlatEarth) ที่มีส่วนประกอบเฉพาะฝั่งลูกค้า ฝั่งเซิร์ฟเวอร์ และส่วนประกอบทั่วไป ฉันต้องการสร้างแพ็กเกจ npm เดียวที่อนุญาตให้ import เฉพาะส่วนที่เกี่ยวข้องเท่านั้น
ตัวอย่างเช่น โครงการที่ทำด้านฝั่งไคลเอนต์เท่านั้นจะสามารถทำสิ่งต่อไปนี้ได้:
import { FeCommon, FeClient } from 'FlatEarth'.ปัญหาที่ฉันกำลังเผชิญคือแม้ว่าฉันจะนำเข้าเฉพาะคอมโพเนนต์ FeClient และ FeCommon แต่คอมโพเนนต์ FeServer (request-promise) จะทำให้เกิดข้อผิดพลาดในกระบวนการสร้าง (เนื่องจากไม่สามารถใช้งานร่วมกับโซลูชันฝั่งลูกค้าได้) เพราะยังคงถูกนำเข้าโดยไฟล์ index.ts ของ FlatEarth
การตั้งค่าของ FlatEarth โดยพื้นฐานคือ:
index.ts
import * as FeCommonStatic from './FeCommon';
import * as FeServerStatic from './FeServer';
import * as FeClientStatic from './FeClient';
export { FeCommonStatic as FeCommon };
export { FeServerStatic as FeServer };
export { FeClientStatic as FeClient };
FeCommon.ts
import * as stringStatic from './String';
import * as uriStatic from './Uri';
export { stringStatic as string };
export { uriStatic as uri };
FeServer.ts
import { ServerRequestHandler } from './Server/ServerRequestHandler'; // Depends on request-promise.
export { ServerRequestHandler as RequestHandler }
FeClient.ts
import { ClientRequestHandler } from './Client/ClientRequestHandler'; // Depends on jquery
export { ClientRequestHandler as RequestHandler }