我的机器上有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
,结果相同。