Мое приложение не может найти мой пакет TypeScript, загруженный из реестра NPM (модуль не найден) - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблемы с упаковкой моего проекта TypeScript , который я опубликовал в реестре npm . Я новичок в упаковке модулей для использования другими, так что я, вероятно, просто делаю что-то не так.

Это части пакета . json, которые кажутся актуальными:

{
  "name": "robotnik-bot",
  "version": "0.1.0-4",
  "description": "Friendly neighborhood Discord bot",
  "main": "out/index",
  "types": "out/index.d.ts",
  "typings:": "out/index.d.ts",
  "scripts": {
    "build": "tsc",
    "test": "mocha -r ts-node/register tests/**/*.test.ts",
    "coverage": "nyc -r lcov -e .ts -x \"*.test.ts\" npm run test",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "prepublish": "tsc"
  },

И это tsconfig. json:

{
    "compilerOptions": {
      "target": "es6",
      "module": "commonjs",
      "outDir": "out",
      "sourceRoot" : "src",
      "sourceMap": true,
      "declaration": true,
      "resolveJsonModule": true,
      "esModuleInterop": true,
      "moduleResolution": "node",
      "typeRoots": [
        "node_modules/@types"
      ]
    },
    "exclude": [
      "out",
      "nodule_modules",
      "tests"
    ],
    "lib": ["es2015"],
  }

В моем зависимом проекте я добавил пакет как зависимость и попытался использовать его:

  "dependencies": {
    "robotnik-bot": "^0.1.0-4"
  },
  "devDependencies": {
    "typescript": "^3.8.2"
  },
  "scripts": {
    "start" : "tsc && node dist/index.js"
  }
import { Builder } from 'robotnik-bot';

const bot = new Builder().build();

Но зависимый проект не может найти модуль. Когда я проверяю nodue_modules, кажется, что он только что упаковал файловую структуру моего проекта с исходниками TypeScript; не должно ли быть каких-то скомпилированных Javascript?

1 Ответ

1 голос
/ 14 апреля 2020

Там должны быть скомпилированные файлы. Если нет, вы либо опубликовали чистый рабочий каталог (без скомпилированных файлов), либо ваша упаковка настроена так, чтобы не включать скомпилированные файлы.

Вы можете использовать npm publish --dry-run, чтобы увидеть, что будет включено.

Обратите внимание на следующее из документации :

Публикация пакета в реестре, чтобы его можно было установить по имени. Все файлы в каталоге пакета включены, если локальный файл .gitignore или .npmignore не существует. Если оба файла существуют и файл игнорируется .gitignore, но не .npmignore, тогда он будет включен

Кажется, что ваши файлы исключены через .gitignore, что имеет смысл. Вы можете добавить их обратно, используя свойство files в package.json, например,

"files": [
    "out"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...