我正在尝试构建实用程序npm软件包。在我的src
目录中,有一堆声明多种接口/类型的打字稿文件。例如,在src/value-updatable.ts
中,我有:
export interface UnaryValueUpdatable<T> {
value: T;
onChange: (value: T) => void;
}
我将整个源代码编译为dist/
,因为它是一个实用程序包,没有条目或主文件,我只想在其他项目中使用这些类型。我什至不确定是否需要编译,但是问题仍然存在。当我在其他项目中安装软件包时,必须从dist/
或src/
导入,而不是从软件包名称本身导入。
例如:
import {UnaryValueUpdatable} from "my-utility-package/dist/UnaryValueUpdatable"
我如何配置我的程序包以暴露像这样的“漂亮”路径:import {whatever} from "my-utility-package/whatever"
?
package.json:
{
"name": "my-utility-package",
"version": "1.0.0",
"files": [
"dist/**/*"
],
"scripts": {
"build": "tsc"
},
"license": "MIT",
"dependencies": {
"typescript": "^3.6.4"
}
}
tsconfig:
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "commonjs",
"outDir": "dist",
"moduleResolution": "node",
"resolveJsonModule": true,
"declaration": true,
"jsx": "react"
},
"include": ["src"],
"exclude": ["dist"]
}
答案 0 :(得分:0)
您可以在项目根目录中创建包含package.jsons
的目录,这些目录指向您要在dist
中公开的目录。
您可以将项目的结构设置为:
package.json (for entire project)
src
| secondary-package-name
|- index.ts
secondary-package-name
|- package.json (for secondary-module-name)
dist
|- generated files
您的辅助模块的package.json只需要包含
{
"name": "package/secondary-package-name",
"private": true,
"main": "../dist/secondary-package-name/index.js"
}
指向您的dist
然后您应该能够像这样从辅助包中引用导出:
import { someFn } from "package/secondary-package-name"
只要它是从该目录中的index.ts文件导出的
您还需要确保主package.json的files
字段包含新目录:
"files": [
"dist",
"secondary-package-name"
],