如何将无project.json的旧Nx工作区Lib迁移至新版Nx工作区
旧版Nx Lib迁移至新版Nx工作区的解决方案
问题原因
旧版Nx(尤其是早期基于Angular CLI + Nx的版本)创建的Lib,是通过Angular原生命令生成的,这类Lib不会被Nx工作区自动纳入配置体系,所以convert-to-nx-project命令无法识别到对应的Lib配置。
手动迁移步骤
1. 手动创建project.json配置文件
在你的Lib根目录(如libs/my-lib/)下新建project.json,参考以下模板修改适配你的Lib:
{ "name": "my-lib", "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "libs/my-lib/src", "projectType": "library", "targets": { "build": { "executor": "@nrwl/angular:package", "options": { "project": "libs/my-lib/ng-package.json" }, "configurations": { "production": { "tsConfig": "libs/my-lib/tsconfig.lib.prod.json" }, "development": { "tsConfig": "libs/my-lib/tsconfig.lib.json" } }, "defaultConfiguration": "production" }, "test": { "executor": "@nrwl/jest:jest", "outputs": ["{workspaceRoot}/coverage/libs/my-lib"], "options": { "jestConfig": "libs/my-lib/jest.config.ts", "passWithNoTests": true } }, "lint": { "executor": "@nrwl/linter:eslint", "options": { "lintFilePatterns": ["libs/my-lib/**/*.ts", "libs/my-lib/**/*.html"] } } }, "tags": [] }
- 把所有
my-lib替换为你的Lib实际名称 - 根据Lib的实际构建需求调整
targets内的配置(比如使用其他构建工具时,替换对应的executor)
2. 更新根目录nx.json(可选但推荐)
打开工作区根目录的nx.json,在projects节点下添加你的Lib配置:
{ "projects": { "my-lib": { "tags": [] } } }
3. 验证迁移结果
执行以下命令确认Lib已被识别:
nx show project my-lib
如果能正常输出Lib的配置信息,说明识别成功,之后即可使用nx build my-lib等Nx命令操作该Lib。
4. 清理旧配置(可选)
确认迁移后功能正常,可逐步移除Lib目录下的ng-package.json和package.json,避免配置冲突。
内容的提问来源于stack exchange,提问作者smartmouse
相关产品推荐
相关产品推荐

