NestJS创建可重用/可发布的库

NestJS创建可重用/可发布的库,nestjs,Nestjs,我想创建一个Nest.js包,以便在多个Nest.js项目中重用控制器 我已经签出了,但这似乎不是我想要的,因为似乎只有在repo中才能导入库 拥有一个可以通过npm发布的库以便我可以在其他嵌套项目中安装和导入它的最佳方法是什么?最好的方法之一是创建一个动态模块 本主题将帮助您完成以下任务 对于通过npm发布,这篇文章将是您以清晰的方式完成的指南这就是我如何完成的 创建文件夹并初始化节点包 安装以下依赖项和开发人员依赖项 然后转到您的package.json并将main,类型,脚本更改/添加到以

我想创建一个Nest.js包,以便在多个Nest.js项目中重用控制器

我已经签出了,但这似乎不是我想要的,因为似乎只有在repo中才能导入库


拥有一个可以通过npm发布的库以便我可以在其他嵌套项目中安装和导入它的最佳方法是什么?

最好的方法之一是创建一个动态模块
本主题将帮助您完成以下任务

对于通过npm发布,这篇文章将是您以清晰的方式完成的指南

这就是我如何完成的

  • 创建文件夹并初始化节点包
  • 安装以下依赖项和开发人员依赖项
  • 然后转到您的
    package.json
    并将
    main
    类型
    脚本
    更改/添加到以下内容
  • 运行
    npm安装

  • 在文件夹中创建
    tsconfig.json
    文件

  • 将以下代码添加到
    tsconfig.json

  • 创建
    src
    文件夹。在此文件夹中添加嵌套代码

  • src
    文件夹中添加一个
    index.ts
    文件。在该文件中,您可以导出要在此包之外使用的嵌套代码。例如:

  • 这将导出模块和服务,您可以在嵌套项目中导入/提供这些模块和服务

  • 运行
    npm运行构建
    。这将把代码编译到
    dist
    文件夹中

  • 现在,您可以使用
    npm i PATH_TO_package

    @nest/common库不存在,并且在第4点无法使用@nestjs/common安装此包。我相信我们希望同时注入@nestjs/core@nestjs/common。我在新的nestjs版本中看到了通用包。你能再检查一下吗
        mkdir PACKAGE_NAME
        cd PACKAGE_NAME
        npm init    // Follow the steps to initialize npm package 
    
        npm install @nest/common rxjs reflect-metadata
        npm install -d @types/node rimraf typescript
    
        "main": "dist/index.js",
        "types": "dist/index.d.ts",
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1",
            "build": "rimraf dist && tsc",
            "prepublish": "npm run build"
        },
    
        "compilerOptions": {
            "experimentalDecorators": true,
            "target": "es2017",
            "module": "commonjs",
            "lib": ["es2017", "es7", "es6"],
            "declaration": true,
            "declarationMap": true,
            "sourceMap": true,
            "outDir": "./dist",
            "rootDir": "./src",
            "strict": true,
            "noImplicitAny": false,
            "strictNullChecks": false,
            "allowSyntheticDefaultImports": true,
            "esModuleInterop": true,
            "emitDecoratorMetadata": true
        },
        "exclude": [
                "node_modules",
                "dist"
            ]
        }
    
        import { CpuUtilizationModule } from "./cpu-utilization-observer.module";
        import { CpuUtilizationService } from "./cpu-utilization.service";
    
        export { CpuUtilizationModule, CpuUtilizationService }