如何从外部原理图中调用 ng add
Posted
技术标签:
【中文标题】如何从外部原理图中调用 ng add【英文标题】:How to call ng add from an external schematic 【发布时间】: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"。
我好像遗漏了什么,但不完全确定是什么。如果需要更多信息或有任何问题,请告诉我。
提前谢谢你!
【问题讨论】:
【参考方案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,
【讨论】:
以上是关于如何从外部原理图中调用 ng add的主要内容,如果未能解决你的问题,请参考以下文章
cadence 快速通过选择原理图中元件,然后选取对应PCB中元器件 ,怎么操作
cadence 快速通过选择原理图中元件,然后选取对应PCB中元器件 ,怎么操作
在AD10中如何改变原理图中放置的器件的大小,如图,要把电容变小一点!