typescript npm 包 - 如何不必从 "dist/"导入

标签 typescript npm package.json tsconfig

我正在尝试构建一个实用程序 npm 包。在我的 src目录我有一堆声明多个接口(interface)/类型的 typescript 文件。例如 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" ?

包.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"]
}

最佳答案

您可以在项目根目录中创建包含 package.jsons 的目录。 s 指向您要在 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 文件导出的
您还需要确保 files主 package.json 的字段包括新目录:
"files": [
  "dist",
  "secondary-package-name"
],
(最初在 https://stackoverflow.com/a/62482409/5574183 中回答)

关于typescript npm 包 - 如何不必从 "dist/"导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554339/

相关文章:

javascript - 咕噜服务器 : command not found in terminal

javascript - 开 Jest 没有找到所有测试

node.js - package.json 在 azure 上失败并出现错误 Windows_NT 6.2.9200

node.js - 应如何正确处理 Azure Function 中 Azure 服务总线/主题客户端的打开和关闭?

javascript - TypeScript foreach 返回

Electron+Angular 2 和 TypeScript 应用程序中的 Node.js 模块查找

reactjs - 如何修复 gyp ERR!使用 npm 构建错误?

node.js - npm package.json 文件中的依赖项、devDependencies 和 peerDependencies 之间有什么区别?

javascript - 我的 NODE 代码不工作是因为我使用的是 Windows 而不是 Linux?

typescript - 如何在 TypeScript 中使用 TimeSpan