【发布时间】:2020-10-21 10:40:23
【问题描述】:
我的项目中有一个modelsdirectory (my-models),其中包含我的应用程序的一些重要的打字稿类。
我一直在应用程序中使用它,没有任何问题,现在我想把它做成一个 npm 包,这样我就可以将它导入另一个项目。
这是我尝试做的:
-
my-models目录中的 npm init(包含我所有 模型和类) -
my-models目录中的 npm 链接(包含我所有模型和类的目录) - npm link
my-models在另一个“客户端”项目的根目录中 - 在客户端项目的某些文件中从“my-models”导入 *
我遇到的问题是,无论我做什么,我都找不到一种方法来共享我所有的 Typescript 类并在另一个项目中使用它们。我在编译我的库时遇到了麻烦,然后当我编译它时,我无法在我的客户端项目中导入类。我收到此错误:
`文件'.../services/my-models/index.d.ts'不是module.ts(2306)
这是my-models的package.json:
{
"name": "my-models",
"version": "0.9.0",
"description": "API Client and models",
"main": "dist/main.js",
"types": "index.d.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"axios": "^0.19.0",
"@types/axios": "^0.14.0"
},
"devDependencies": {
"typescript": "^3.9.5"
}
}
这是我的客户项目中的一个导入,我尝试导入我的一个模型:
import { Student } from 'my-models'
但是等等,我有点让它起作用了:
import { Student } from 'my-models/dist/main'
为什么?我在my-models的package.json中说dist/main.js是主文件,为什么我不能只从“my-models”导入*?
顺便说一句,这是 my-models/dist 目录:
所以不确定我是否做错了什么或如何正确地做。感谢任何帮助
【问题讨论】:
-
dist是否真的包含在你的 npm 包中?您可以通过查看node_modules来仔细检查。如果它不存在,您应该使用package.json中的files属性来创建您希望包含在npm 包中的所有内容的列表。 -
另外,这是一个私有的 npm 包吗?包是如何包含的?
-
是的,这是一个私有包,包含你的 dist/
-
它是如何包含的?我在您的
package.json中没有看到files属性。您是否使用 npmjs.org、github 包或其他主机来安装此包? -
在观看了 Basarat Ali 的这段视频后,我终于成功了:youtu.be/jJNIuBTAb6Q
标签: node.js reactjs typescript npm