Пакет машинописного текста npm - как не импортировать из "dist /" - PullRequest
2 голосов
/ 25 октября 2019

Я пытаюсь собрать пакет утилит 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"]
}
...