如何在本地开发角度cli生成器

时间:2018-11-21 18:12:25

标签: angular npm angular-cli

我的机器上有2个文件夹,一个Angular CLI项目和一个打字稿项目,我正在为Angular CLI建筑师开发构建器。这是一个单库,构建器仅供内部使用,我从未计划过发布。我试过以4种不同的方式引用建造者:

相对:

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "relative/path/to/my-builders:my-browser"
        }
      }
    }
  }
}

安装本地模块(文件:):

/* package.json */
{
  "devDependencies": {
    "my-builders": "file:relative/path/to/my-builders"
  }
}

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

npm链接(“正确”方式)(不可选项,请参见https://github.com/angular/angular-cli/issues/13055#issuecomment-442815952

在my-builders文件夹中运行npm link,然后在angular cli项目文件夹中运行npm link my-builders

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

npm包:

在my-builders文件夹中运行npm pack

/* package.json */
{
  "devDependencies": {
    "my-builders": "file:relative/path/to/my-builders-version.tgz"
  }
}

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser"
        }
      }
    }
  }
}

除npm pack以外的所有方法都会在ng build上产生误导性错误

  

检测到Angular编译器,但它是错误类的实例。   这可能意味着您已经安装了几个@ ngtools / webpack软件包。您可以使用npm ls @ngtools/webpack进行检查,然后删除多余的副本。

npm ls @ngtools/webpack

的输出
`-- @angular-devkit/build-angular@0.8.3
  `-- @ngtools/webpack@6.2.3

每次改动都需要运行npm pack是不合理的,是否有更好的方法在本地开发构建器? (建议建造者将其放在自己的项目中进行分离)。

重复存储库https://github.com/gatimus/builder-development

编辑:

我也尝试过

/* angular.json */
{
  "projects": {
    "my-cli-proj": {
      "architect": {
        "build": {
          "builder": "my-builders:my-browser",
          "options": {
            "preserveSymlinks": true
          }
        }
      }
    }
  }
}

ng build --preserve-symlink,结果相同。

1 个答案:

答案 0 :(得分:0)

根据此comment,构建器应位于同一项目中。