You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular多应用项目指定路径生成组件,避免自动添加src/app

解决Angular多项目中CLI自动添加src/app路径的问题

这个问题在Angular多项目工作区里确实很容易碰到,我给你几个实用的解决思路:

方法1:指定目标项目并使用相对路径

Angular CLI默认会基于当前默认项目的sourceRoot来生成文件,所以你需要明确告诉CLI要操作哪个应用,这样它就会用该应用的源码根目录来拼接路径,而不是默认的src/app。

假设你的工作区结构是这样的:

your-workspace/
├── projects/
│   ├── main-app/
│   │   └── src/
│   │       └── app/
│   └── admin-app/
│       └── src/
│           └── app/

如果要在admin-app的app/components目录下生成一个user-list组件,直接运行:

ng generate component components/user-list --project admin-app

CLI会自动基于admin-app的sourceRoot(也就是projects/admin-app/src)来生成文件,最终路径就是projects/admin-app/src/app/components/user-list,完全符合预期。

方法2:用--path参数强制指定生成路径

如果你不想依赖项目的默认配置,想直接指定精确的生成位置,可以用--path参数,注意路径要从项目根目录开始写,并且加上./前缀(避免CLI自动拼接默认路径)。

比如要在admin-app的src/shared/ui目录下生成组件:

ng generate component user-card --path ./projects/admin-app/src/shared/ui

这样CLI会直接把组件生成到你指定的路径下,不会额外添加src/app前缀。

方法3:修改目标项目的sourceRoot配置(可选)

如果你的某个应用的源码结构和默认的src/app不一样,比如想把所有组件都放到src/shared下,可以修改angular.json中该项目的sourceRoot字段:

{
  "projects": {
    "admin-app": {
      "root": "projects/admin-app",
      "sourceRoot": "projects/admin-app/src/shared", // 修改这里
      // ...其他配置
    }
  }
}

之后你用--project admin-app生成组件时,CLI就会默认把组件放到projects/admin-app/src/shared目录下,不用每次手动写路径。不过这个改动会影响整个项目的CLI生成行为,建议先确认项目结构再调整。

额外注意事项

  • 执行命令时一定要在项目根目录下运行,否则路径会出错
  • 如果要把组件注册到指定模块,还可以加上--module参数,比如--module admin-app/src/app/app.module.ts
  • 避免直接写不带前缀的绝对路径(比如/projects/admin-app/...),在Windows系统下可能会识别错误,优先用./开头的相对路径

内容的提问来源于stack exchange,提问作者Angad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:56:05