【问题标题】:How to call ng add from an external schematic如何从外部原理图中调用 ng add
【发布时间】:2019-12-13 09:47:42
【问题描述】:

在为外部角度示意图调用 ng add 时,我需要帮助。 (我正在尝试添加 ng-momentum:https://github.com/BottleRocketStudios/ng-momentum)我正在尝试从自定义 CLI 调用“ng add ng-momentum”,但是我遇到了模块“ng-momentum”不能的问题被发现。

我尝试以几种不同的方式从@angular-devkit/schematics 调用 externalSchematic 方法,但缺少一些东西。

我尝试过的一些不同的实现:

return chain([
  externalSchematic('ng-momentum', 'scaffold', { 
   project: options.project,
 })

return chain([
  externalSchematic('ng-momentum', 'ng-add', {
  }),
  externalSchematic('ng-momentum', 'scaffold', {
    spec: false,
    force: true,
  })

还有

return chain([
  externalSchematic('ng', 'add', {
   project: options.project,
   package: 'ng-momentum',
 })

但我总是遇到如下所述的错误

复制步骤
1) 运行“npm i @lcu/cli -g”安装自定义 CLI
2)创建一个新的空文件夹,导航到它
3) 运行命令“lcu init”。将范围命名为“@scope”,将工作区命名为“test”
4)在同一文件夹中,运行命令“lcu proj newProject”选择“App”。选择“动量”

预期行为:按照 ng-momentum 的步骤,如果我创建一个新的 Angular 项目 (ng new newProject),然后在 CLI 之外运行 ng add (ng add ng-momentum),我会得到一个新的 Angular 项目和 ng-momentum 应用程序。

实际行为:我收到以下错误:“Could not find module "ng-momentum" from "C:\wherever\your\project\is"。

我好像遗漏了什么,但不完全确定是什么。如果需要更多信息或有任何问题,请告诉我。

提前谢谢你!

【问题讨论】:

    标签: angular-cli angular-schematics angular-devkit


    【解决方案1】:

    我很难从自定义添加原理图中调用 externalSchematic,实际上,您要从 ng add 调用的库必须本地安装在根 package.json 中。

    externalSchematic 调用正在寻找 package.json,除非它安装在根原理图项目中,否则它将无法工作。

    希望和这个问题有关!

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题并找到了解决方案。

      问题是要运行ng-momentum:ng-add原理图,您需要在它之前安装包,以及ng add为我们做。

      因此,您需要将原理图分为两种情况:安装依赖项和您的实际规则。

      查看要求安装包并将您的规则排队的规则。

      
      export functions dependencies(options): Rule: Rule {
          return (_tree: Tree, context: SchematicContext) => {
              const installTaskId = context.addTask(new NodePackageInstallTask({
                  packageName: 'ng-momentum'
              }));
      
              context.addTask(new RunSchematicTask('after-dependencies', options), [installTaskId]);
          }
      }
      
      

      不要害怕,如果你像这样配置你的集合,你的用户不会看到这个。

      
      {
          "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
          "schematics": {
              "your-rule": {
                  "factory": "./what-ever/index#dependencies",
                  "schema": "./what-ever/schema.json"
              },
              "after-dependencies": {
                  "factory": "./what-ever/index#yourRule",
                  "schema": "./what-ever/schema.json",
                  "private": true,
              }
          }
      }
      
      
      

      【讨论】:

        猜你喜欢
        • 2020-11-09
        • 1970-01-01
        • 2020-10-10
        • 2021-05-13
        • 1970-01-01
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多