问题标签 [angular-schematics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
29 回答
138178 浏览

angular - 在Angular 2+中生成没有spec.ts文件的组件

每当我创建一个新组件时,有没有办法摆脱 Angular 2+ 中的 spec.ts 文件。我知道这是出于测试目的,但如果我不需要它怎么办。

可能有一些设置可以禁用这个特定的测试文件。

0 投票
2 回答
5135 浏览

angular - angular-cli 自定义原理图/集合

我正在尝试为 angular cli 创建自定义原理图。到目前为止,我已经发现必须编译“集合”,cli 无法读取打字稿。这意味着您不能只克隆https://github.com/angular/devkit/tree/master/packages/schematics/angular更改您需要的任何内容并将其发布到 npm 上,这意味着您需要克隆整个https:// github.com/angular/devkit并使用它npm run build来创建您需要通过 tsc 运行它的编译原理图,然后您可以将这些编译文件发布到 npm 并使用 npm 全局安装,例如

npm i -g @thescrollbar/schematics

那么我应该能够做到,ng new --collection=@thescrollbar/schematics my-app但令人惊讶的是,它不起作用并且正在抛出tree.branch is not a function.

但是如果你把这个全局安装的包复制到cli的模块

/usr/local/bin/node_modules/@thescrollbar/schematics->/usr/local/bin/node_modules/@angular/cli/node_modules/@thescrollbar/schematics

它开始工作,您可以创建一个基于您的原理图的新应用程序..

现在对于新问题我没有解决方法,当我尝试生成一个新组件时

ng g c --collection=@thescrollbar/schematics logo

它使用@schematics/angular模板而不是我的集合创建它,尽管事实上当我故意这样做时

ng g shat --collection=@thescrollbar/schematics logo

它说

在集合“@thescrollbar/schematics”中找不到示意图“shat”。

我认为这清楚地表明它确实在使用我的收藏?

有人设法让自定义集合正常工作吗?在全球范围内生成组件/模块?

0 投票
1 回答
372 浏览

javascript - Angular 5 原理图模板

所以,最近我的团队开始尝试最新的 angular-cli 附带的新原理图,并决定构建我们自己的一些原理图。到目前为止,一切都很顺利,但现在我们正处于一个十字路口,我们不知道该去哪里。

我们有一个 json 文件,其中包含一些我们想要解析并为其生成自定义表单的数据。通常,当您模板化您使用的文件时:

<%= optionalFunc(someParam) %>

然而,这种类型的模板似乎只处理字符串、布尔值和可能的整数。有什么想法吗?

0 投票
1 回答
627 浏览

angular - angular-cli 自定义原理图——修改 environment.ts

我正在为我们的 Angular Cli 项目开发自定义原理图。其中一项要求是将属性/变量添加到 environment.prod.ts 和 environment.dev.ts 文件中。我想知道你们中是否有人这样做过,以及你是如何做到的。到目前为止,我还没有找到任何方法来检索文件本身的内容。我只设法找到以下内容:

任何帮助是极大的赞赏!

0 投票
5 回答
6742 浏览

angular - 如何用角度示意图覆盖文件?

我想写一个Rule每次都覆盖一个文件。在下面并已MergeStrategy设置为Overwrite

collection.json

function/index.ts

files/__path__/__name@dasherize__.ts

我跑schematics .:function --name=test --dry-run=false我得到

创建 /src/app/test.ts(33 字节)

但是,第二次。

错误!/src/app/test.ts 已经存在。

它不应该在没有错误的情况下覆盖文件 test.ts 吗?

编辑:

所有答案都有效并且很棒,但似乎它们是变通方法,没有明显的“正确”答案,并且可能基于偏好/自以为是。所以不知道如何标记为已回答。

0 投票
1 回答
1186 浏览

angular - Angular 示意图中的 branchAndMerge 函数有什么作用?

我正在尝试使用 Angular 原理图,并且在各个地方都遇到了函数 branchAndMerge()。然而,没有人解释它的作用。

我见过的地方:

澄清它与merge/mergeWith的区别以及如何正确使用它将不胜感激。

PS:合并在@angular-devkit/schematics中解释如下:

将输入树与另一棵树合并。

顺便说一句,我假设 merge() 现在是 mergeWith,尽管我对此不是 100% 确定的。

代码示例

0 投票
2 回答
1127 浏览

angular - Angular 6 Schematics 无效源(未定义)

我正在创建一些自定义原理图,这将帮助我们快速启动 Angular 库项目。鉴于此,我不希望开发人员必须有一个ng ...他们必须运行的命令清单才能启动和运行库,我只想有一个命令来设置工作区,将库放入其中,进行一些自定义(以开玩笑的方式交换业力,添加一些 CI 配置等)。

我这样做的方法是创建一个从空树开始的原理图,然后ng-new从 调用原理图@schematics/angular,通过externalSchematic()链接library来自同一个包的原理图,然后是我们的一些自定义原理图以进行自定义。

我想要使​​用externalSchematic()而不是将所有外部原理图的代码复制到我的原理图项目中的原因是,当@schematics/angular更新时,我可以yarn upgrade-interactive通过运行测试套件来查找和解决任何问题来合并这些更新。最终,我们可以使用 CI 将其自动化。

我在这里创建了一个小的自包含示例来重现我的错误:https ://github.com/matt328/ng-schematics-test

重现步骤:

当我运行原理图时,它会报告Invalid source: undefined.

这里

https://github.com/matt328/ng-schematics-test/blob/master/src/my-full-schematic/index.ts#L30

是我externalSchematic()用来打电话的地方ng-new

我已经对源代码进行了一些挖掘,发现它是由一些角度示意图引起的

在他们的模式中。该错误是projectName未定义的结果。

为了能够与 通话ng-new,还需要做externalSchema()什么?这种方法有效吗,还是有其他方法可以做到这一点?

0 投票
1 回答
2120 浏览

angular - Angular/CLI 6.x 中的自定义原理图构建没有错误,但我无法使用它来生成文件

在 Angular 6.0 之前,我已经创建了一些示意图。schematic 'my-schematic' not found in collection @schematics/angular当我尝试在托管应用程序(Angular 6)上生成一些代码时,我在 Angular 5.x 中执行的相同步骤现在总是会导致错误?。

我的设置(全局 Angular 的东西):

我的步骤:

  1. schematics schematic --name=my-first-schematics。因此,它创建了一个新的原理图项目,其中包含三个示例模式。然后我导航到那个新文件夹cd my-first-schematics
  2. npm run build。它构建没有错误。
  3. schematics .:my-first-schematics。结果:"my-first-schematics" not found in collection "."我在一些博客中看到他们执行此步骤没有问题的错误。我从来没有运行过这个命令,我不确定它实际上做了什么,所以我会假设这个命令毕竟不是必需的。
  4. npm link,以便我可以在新项目中使用这个新的原理图集合。
  5. 在另一个提示窗口中,我创建了一个新应用程序:ng new schematics-consumer,然后在 npm 安装后,cd schematics-consumer.
  6. Rannpm link my-first-schematics所以我现在可以访问该原理图库。
  7. 我导航到那是src/app我要生成文件的地方。
  8. ng g my-schematic -c my-first-schematics。导致错误Schematic "my-schematic" not found in collection "@schematics/angular"。我指定了一个集合。为什么它没有看到我的新集合,并且仍然认为每个原理图都在@schematics/angular

所以,我不能用原理图生成任何东西。我没有修改schematics schematic name=my-first-schematics.

是否有一套新的命令、程序等来创建我们自己的自定义原理图?我错过了哪些步骤?我还需要安装什么?如有必要,我会提供更多信息。

目前,还没有关于原理图的新指南或博客,因为 6.0 只有几周的历史,所以我假设旧方法应该仍然有效。

0 投票
3 回答
677 浏览

angular - 在 angular-cli 中打印自定义原理图日志

我正在写自定义角度升级示意图。

SchematicContext包含一个可用于调试的记录器对象。

运行 angular-cli,我的代码已执行,但我看不到日志。

有没有办法激活和配置这个记录器?

0 投票
1 回答
415 浏览

angular - 尝试创建导航栏时出现角度示意图错误

尝试在角度 6 中运行命令时引发以下错误ng generate @angular/material-nav --name=main-nav。谁能帮我解决这个问题>

错误:在集合“@schematics/angular”中找不到示意图“@angular/material-nav”。