我創(chuàng)建了一個(gè)最小的例子來(lái)展示我的問(wèn)題:Github repo。我有一個(gè) lerna monorepo,packages文件夾中有兩個(gè) npm 包,這些包被稱為:utils:導(dǎo)出一個(gè)函數(shù):export const add = (a:number, b: number) => a + bcomponent-library: : 導(dǎo)出一個(gè)簡(jiǎn)單的功能性 React 組件:import React from 'react';import { add } from '@project/utils';export const MyComponent = () => <div>{add(2, 2)}</div>;monorepo 的根目錄有一個(gè)tsconfig.json,它定義了一個(gè)paths將表單的任何導(dǎo)入映射@project/*到包的鍵。{ "compilerOptions": { "jsx": "react", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "moduleResolution": "node", "allowJs": true, "baseUrl": ".", "paths": { "@project/*": ["packages/*/src"] } }, "exclude": ["**/build/**"]}每個(gè)包都有一個(gè)rollup.config.js,兩者基本相同(盡管我們?cè)赾omponent-library這里只使用包中的一個(gè)):import typescript from '@rollup/plugin-typescript';import commonjs from '@rollup/plugin-commonjs';export default { input: 'src/index.tsx', output: { dir: './build', format: 'cjs' }, plugins: [ commonjs(), typescript({ tsconfig: '../../tsconfig.json'}), ]};因此,它們都使用定義在 root 中的路徑tsconfig.json,并且使用了一個(gè)插件來(lái)轉(zhuǎn)譯 Typescript。component-library@project/utils從被調(diào)用導(dǎo)入一個(gè)函數(shù)add(a,b)。我的目標(biāo)是創(chuàng)建這個(gè)庫(kù)的構(gòu)建(使用rollup),而不必先構(gòu)建utils包。換句話說(shuō),我想構(gòu)建component-library解析導(dǎo)入utils的源代碼utils,而不是符號(hào)鏈接包中的構(gòu)建文件夾node_modules(即,不使用 lerna 創(chuàng)建的符號(hào)鏈接)。我?guī)缀鯇?shí)現(xiàn)了這一點(diǎn),除了在運(yùn)行構(gòu)建腳本時(shí)component-library,我得到一個(gè)錯(cuò)誤:src/index.tsx → ./build... [!] Error: Unexpected token (注意,你需要插件來(lái)導(dǎo)入不是 JavaScript 的文件) ..\utils\src\index.ts (1:21) 1: export const add = (a:number, b: number) => a + b ^我理解這一點(diǎn)的方式,這意味著導(dǎo)入的解析工作正常,但匯總不會(huì)轉(zhuǎn)換來(lái)自外部依賴項(xiàng)的 TS 文件。如何告訴 rollup 將來(lái)自 utils 的文件包含在通過(guò) rollup 進(jìn)行的編譯中?
如何匯總以在其編譯(TypeScript)中包含來(lái)自另一個(gè)包的依賴項(xiàng)?
不負(fù)相思意
2022-05-22 10:26:01