我在包装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"
},
{
"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吗?
答案 0 :(得分:1)
应该有编译文件。如果没有,则您发布了一个干净的工作目录(没有编译文件),或者您的包装被配置为不包括编译文件。
您可以使用npm publish --dry-run
查看要包含的内容。
请注意以下from the documentation:
将软件包发布到注册表,以便可以按名称安装。如果不存在本地
.gitignore
或.npmignore
文件,则包含软件包目录中的所有文件。如果两个文件都存在,并且.gitignore
忽略了一个文件,而.npmignore
则没有忽略该文件,则将其包含在内
您的文件似乎已通过.gitignore
排除在外,这很有意义。您可以使用files
中的package.json
属性将它们添加回去,例如
"files": [
"out"
]