# nestjs-packages-demo **Repository Path**: ivan2261/nestjs-packages-demo ## Basic Information - **Project Name**: nestjs-packages-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-12 - **Last Updated**: 2024-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 # 项目搭建 1. 使用lerna构建packages项目 ```shell # 安装lerna并初始化packages项目 npm i -g lerna lerna -v lerna init lerna create project --yes ``` 2. 添加子包依赖 ```shell yarn workspace project add xxx@版本号 yarn workspace project remove xxx ``` 3. scripts中命令的调用 ```shell # 运行子包命令 yarn workspace project run # 运行所有包命令 yarn workspaces run ``` ## 应用级项目改造 1. 删除子包项目 2. 使用nest-cli生成子包项目 ```shell # 安装@nestjs/cli工具 npm i -g @nestjs/cli nest new project ``` 3. 运行项目 ``` cd yarn workspace project run start ``` ## types项目改造 1. 删除子包目录,仅保留package.json 2. 给子包安装typescript ```shell npm i -g typescript ``` 3. 初始化typescript ``` cd packages/project-types tsc --init ``` 4. 配置tsconfig.json > 解除注释并修改 ```json "declaration": true, "declarationMap": true, "outDir": "./dist", "declarationDir": "./dist", ``` 5. 创建src目录,创建业务目录 > 文件类型 @types.ts ```ts declare namespace InfoA { type ExampleA = string; } ``` > 常量文件 constants.ts ```ts export const enum StatusA { start, finish, } ``` > 入口文件 index.ts (将所有的内容导出供他人使用,该文件需要手动添加) ```ts // 导入所有类型 import "./a/@types"; import "./b/@types"; // 导出所有常量 export * from "./a/constants" export * from "./b/constants" ``` 6. 修改子包目录中的package.json > 确保修改如下信息,其他信息可裁剪 ```json { "main": "dist/index.js", "files": [ "dist" ], "scripts": { "dev": "tsc -w" }, } ``` 7. 在其他项目中使用 ```shell yarn workspace project add project-types@0.0.0 -D ``` ## 其他命令 ```shell yarn workspace project run pkg yarn workspace @project-types publish ```