【发布时间】:2025-11-23 17:25:01
【问题描述】:
我想使用 angular-cli 生成一个新的工作区
目前唯一的方法是运行:
ng new asdf
cd asdf
ng g application whatever
但是所有src/ 文件仍然存在(以及现在不一致存储的项目的原始 angular.json 信息)。如果没有src 文件夹,就无法创建新的存储库...当我使用自定义原理图执行此操作时,基本上复制了 angular-cli 的 ng-new 并删除了 https://github.com/angular/angular-cli/blob/6449a753641340d8fc19a752e1a1ced75f974efa/packages/schematics/angular/ng-new/index.ts#L61 schematic('application', applicationOptions),
每当我运行它...
$ ng new asdf -c=my-schematic
$ cd asdf
$ ng g application whatever
{"inlineStyle":false,"inlineTemplate":false,"routing":false,"prefix":"app","style":"css","skipTests":false,"skipPackageJson":false,"name":"whatever"}
CREATE projects/whatever-e2e/protractor.conf.js (752 bytes)
CREATE projects/whatever-e2e/src/app.e2e-spec.ts (304 bytes)
CREATE projects/whatever-e2e/src/app.po.ts (208 bytes)
CREATE projects/whatever-e2e/tsconfig.e2e.json (219 bytes)
只有 e2e 文件被放入projects/,angular.json 文件大部分保持为空:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {},
"cli": {
"defaultCollection": "my-schematic"
}
}
我怀疑这与应用程序示意图中出现静默失败或路径关闭有关...但我想先检查是否有更简单/更首选的方法。
$ ng --version
Angular CLI: 6.1.0-rc.0
Node: 10.1.0
OS: win32 x64
Angular: 6.0.7
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.7.0-rc.0
@angular-devkit/core 0.6.8
@angular-devkit/schematics 0.6.8
@angular/cdk 6.3.1
@angular/cli 6.1.0-rc.0
@angular/material 6.3.1
@schematics/angular 0.6.8
@schematics/update 0.7.0-rc.0
rxjs 6.2.1
typescript 2.7.2
编辑注意我熟悉 3rd-party 库(例如 Nrwl/Nx),但我试图避免这些。我也把这个问题发到了 GitHub:https://github.com/angular/angular-cli/issues/11402
【问题讨论】:
-
我看到你说,“但是所有的 src/ 文件仍然存在(以及现在不一致存储的项目的原始 angular.json 信息)。没有没有办法创建新的 repo src 文件夹。”您有一个*工作区,其中包含一堆子应用程序。可以提交*工作区,并且每个应用程序都作为子模块提交(例如在 git 中)。每个都有自己的开发流程等。顶层可以用作子模块的组合机制(同样,每个模块都有不同的流程),所有这些都在一个父仓库中。那不行吗?
-
我正在尝试使用 angular-cli 来完成这一切。如果我使用
ng new asdf然后添加一些(比如 5 个)“应用程序”(使用ng g app)...你将在asdf/src/内有一个应用程序,在asdf/projects/内有 5 个应用程序都共享一个包.json / angular.json 文件。甚至 e2e 测试也在不同的位置(asdf/e2e/中的一个和asdf/projects/中的 5 个)。这就是我要解决的不一致问题。我宁愿ng new有一个--blank选项(或其他东西),然后就可以在项目中拥有所有东西/而不必手动移动东西。 -
嗯...我不确定我是否认为作为单一回购协议的不一致,每个模块都有自己的 e2e 测试等似乎与这个想法一致,等等。我有点挣扎的一件事是 package.json 的事情。假设我想在其中一个子应用程序中使用 ngrx。我必须在* package.json 中进行安装等。由于我无法为每个应用程序指定不同的 package.jsons,所以 ng g 应用程序最终看起来像是一个美化的功能模块。当然,我可以创建不同的“舞台”子应用程序作为特定的合成器,但是那里的流程开始变得模糊。
-
从组织/文件夹结构的角度来看是不一致的。就我个人而言,我不使用 git 子模块(看不到重点),因此不需要单独的 package.json 文件(尤其是摇树等)。它也不会真正影响流程,因为合并冲突等是由修改重叠文件引起的。仍然可以对 repo 中的特定应用程序进行拉取请求,并且一个“领导”可以为一个团队审查所有这些请求。
-
我也相信这是不一致的行为,我的意思是我们公司开发的大多数项目都有客户端和管理端。目前,客户端位于 projectname -> src 下,而管理端位于 project-name->projects->app-name->src 下,我认为这不是一个好的结构。顺便说一句,我们仍然可以在“项目”中创建客户端目录并将初始 src 文件夹移动到那里,但是我们必须基于此更改所有它的初始路径,所以如果我们必须手动执行此操作。
标签: angular angular-cli angular-schematics