ค้นหาเว็บไซต์

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 }

บทความที่เกี่ยวข้อง