Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 创建Typescript NPM库_Node.js_Reactjs_Typescript_Npm - Fatal编程技术网

Node.js 创建Typescript NPM库

Node.js 创建Typescript NPM库,node.js,reactjs,typescript,npm,Node.js,Reactjs,Typescript,Npm,在我的项目中,我有一个models目录(mymodels),其中包含几个重要的应用程序类型脚本类 我一直在应用程序中使用它,没有任何问题,现在我想让它成为一个npm包,这样我就可以在另一个项目中导入它 这就是我试图做的: my models目录中的npm init(包含所有我的 模型和类) mymodels目录中的npm链接(包含所有mymodels和类的目录) 另一个“客户”项目根目录中的npm链接my models 从客户端项目的某些文件中的“我的模型”导入* 我的问题是,无论我做什么,我都

在我的项目中,我有一个
models
目录(
mymodels
),其中包含几个重要的应用程序类型脚本类

我一直在应用程序中使用它,没有任何问题,现在我想让它成为一个npm包,这样我就可以在另一个项目中导入它

这就是我试图做的:

  • my models
    目录中的npm init(包含所有我的 模型和类)
  • mymodels
    目录中的npm链接(包含所有mymodels和类的目录)
  • 另一个“客户”项目根目录中的npm链接
    my models
  • 从客户端项目的某些文件中的“我的模型”导入*
  • 我的问题是,无论我做什么,我都找不到一种方法来共享我所有的Typescript类并在另一个项目中使用它们。我在编译我的库时遇到了麻烦,当我让它编译时,我无法在我的客户机项目中导入类。我得到这个错误:

    `文件“…/services/my models/index.d.ts”不是module.ts(2306)

    这是我的模型的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'
    
    为什么??我在
    我的模型
    的package.json中说dist/main.js是主文件,为什么我不能从“我的模型”导入*

    顺便说一句,这是我的models/dist目录:


    所以我不确定我是否做错了什么,或者如何正确地做。感谢您的帮助

    我使用Angular CLI构建NPM库,即使它们不是Angular项目。您只需从package.json文件中删除角度依赖项,就可以通过一个强大的测试管道为您设置一个世界级的TypeScript项目

    npm install --global @angular/cli
    ng new my-lib --create-application=false
    
    cd my-lib
    ng generate library my-lib
    
    生成库之后,您可以进入projects/my lib/src目录,打开package.json文件并消除角度依赖关系。现在您有了一个空白的TypeScript项目

    ng构建我的库
    将构建它

    ng test my lib
    将运行单元测试

    cd放入dist/my lib文件夹,您可以
    npm发布
    直接到npm


    当你可以利用Angular团队的工作时,为什么要手动创建一个打字脚本?

    你的npm包中实际包含了
    dist
    ?您可以通过查看
    节点\u模块
    进行双重检查。如果它不在那里,您应该使用
    package.json
    中的
    files
    属性来创建希望包含在npm包中的所有内容的列表。此外,这是一个私有npm包吗?套餐是如何包含的?是的,这是一个私人套餐,您的地区/是如何包含的?我在您的
    package.json
    中没有看到
    files
    属性。你是在使用npmjs.org、github软件包还是其他主机来运行这个软件包?在观看了Basarat Ali的视频后,我终于让它工作起来了:有趣。。。我会试一试的。然而,这种方法并不能帮助我理解为什么我构建包的方式是无效的。