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

如何使用Angular-Cli在/src/app外的目录创建组件等文件

解决Angular CLI在/src/app外创建组件/模块/服务的问题

你已经调整了angular-cli.json里的appRoot为mco,这步方向是对的,但生成命令的路径逻辑需要跟着调整——之前的命令失败是因为路径解析不符合CLI的预期,下面给你具体的解决方案:

1. 先搞懂appRoot的作用

当你把"appRoot": "mco"加到apps数组后,Angular CLI会把src/mco当作你的应用根目录(替代默认的src/app)。这意味着生成命令的相对路径会以src/mco为起点,而不是原来的src/app。

2. 正确的生成命令示例

情况1:在src/mco/lib下创建组件

不需要用../这类相对路径,直接指定相对于appRoot的路径即可:

ng g c lib/test-component

这条命令会自动在src/mco/lib/test-component下生成组件的所有文件。

情况2:在src下的其他独立目录(比如src/common)创建组件

如果要完全跳出appRoot指定的目录,可以用--path参数明确指定目标路径(相对于项目根目录):

ng g c common/test-component --path src/common

执行后组件会被生成到src/common/test-component目录下。

情况3:设置默认生成路径(可选)

如果你经常需要在某个外部目录生成文件,可以修改angular-cli.json的defaults配置,把常用路径设为默认:

"defaults": {
  "component": {
    "path": "src/mco/lib",
    "flat": false
  },
  "service": {
    "path": "src/mco/services"
    // 模块、指令等其他类型的默认路径可以同理配置
  }
}

之后直接运行ng g c test-component,组件就会自动生成到src/mco/lib/test-component下。

3. 为什么你之前的命令会失败

你之前用ng g c ../mco/lib报错,是因为CLI会把../mco/lib当作组件名称(而不是路径)来处理——组件名称不能包含路径分隔符,自然会触发错误。正确的做法是把路径和组件名称分开写,比如ng g c lib/test来指定路径和组件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:18:12