创建NX Workspace时project.json生成空targets,无法修改应用端口
问题
执行npx create-nx-workspace创建新工作区后,apps目录下默认生成的应用的project.json中targets为空对象,无法通过传统方式修改应用端口。
环境
Nx Version: - Local: v18.0.4 - Global: v18.0.4
期望的旧版配置
希望在project.json中找到类似Nx v14版本的完整serve配置,用于自定义端口:
"serve": { "executor": "@nrwl/web:dev-server", "defaultConfiguration": "development", "options": { "buildTarget": "catalog:build", "hmr": true, "port": 4200 }, "configurations": { "development": { "buildTarget": "catalog:build:development", }, "production": { "buildTarget": "catalog:build:production", "hmr": false } } },
临时 workaround
回退到Nx v14版本创建工作区:pnpx create-nx-workspace@14,该版本生成的project.json自带完整的可配置serve目标。
Nx 18 正确解决方案
Nx 18重构了配置结构,默认不再生成完整的targets配置,改用任务管道和简化预设。要配置端口,可通过以下几种方式:
1. 手动添加serve目标到应用的project.json
根据应用类型(Web/React/Vue等),在空的targets对象中添加对应executor的配置:
"targets": { "serve": { "executor": "@nx/web:dev-server", // React应用用@nx/react:dev-server "defaultConfiguration": "development", "options": { "buildTarget": "your-app-name:build", // 替换为你的应用名称 "port": 4201 // 设置自定义端口 }, "configurations": { "development": { "buildTarget": "your-app-name:build:development" }, "production": { "buildTarget": "your-app-name:build:production", "hmr": false } } }, "build": { "executor": "@nx/web:build", // 同步添加build目标,对应应用类型的executor "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/apps/your-app-name" } } }
2. 创建应用时直接指定端口
使用生成命令时通过--port参数直接设置端口,无需后续修改:
npx nx g @nx/web:app your-app-name --port=4201
3. 全局配置默认端口
如果需要所有应用统一使用某个端口,在根目录的nx.json中添加默认配置:
"defaults": { "serve": { "port": 4201 } }
内容的提问来源于stack exchange,提问作者JarochoEngineer
相关产品推荐
相关产品推荐

