我的应用找不到从NPM注册表下载的TypeScript软件包(找不到模块)

时间:2020-04-14 10:42:17

标签: javascript node.js typescript npm

我在包装my TypeScript project上发布的npm registry时遇到问题。我是打包模块供其他人使用的新手,所以我可能做错了什么。

这些是package.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 个答案:

答案 0 :(得分:1)

应该有编译文件。如果没有,则您发布了一个干净的工作目录(没有编译文件),或者您的包装被配置为不包括编译文件。

您可以使用npm publish --dry-run查看要包含的内容。

请注意以下from the documentation

将软件包发布到注册表,以便可以按名称安装。如果不存在本地.gitignore.npmignore文件,则包含软件包目录中的所有文件。如果两个文件都存在,并且.gitignore忽略了一个文件,而.npmignore则没有忽略该文件,则将其包含在内

您的文件似乎已通过.gitignore排除在外,这很有意义。您可以使用files中的package.json属性将它们添加回去,例如

"files": [
    "out"
]