angular-cli - 如何从外部原理图中调用 ng add
问题描述
在为外部角度示意图调用 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-动量应用。
实际行为:我收到以下错误:“无法从“C:\wherever\your\project\is”找到模块“ng-momentum”。
好像我错过了一些东西,但不完全确定是什么。如果需要更多信息,或者有任何问题,请告诉我。
先感谢您!
解决方案
我遇到了同样的问题并找到了解决方案。
问题是要运行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,
}
}
}
推荐阅读
- java - 来自外部 api 的 @Autowiredl bean 始终为 nul
- vba - VBA 用户窗体 - 运行时错误 1004 '应用程序定义或对象定义错误'
- python - 在 Anaconda 中安装 pyspec 模块
- c++ - 与 VS2017 和 FFMPEG 4 完全矛盾的未解决的外部符号 + 未使用的库
- c++ - Direct3D 和 DXGI 之间的区别
- javascript - 如何在Angular中扁平化json?(1级下降)
- java - Android:如何在库中正确加载 ViewStub
- jsp - 当我单击特定按钮时如何使用 jsp 和 servlet 传递请求响应对象
- javascript - 我想要一个带有按钮的搜索框,我可以在其中复制任何图像 URL,并且我希望该图像显示在同一网页上
- android - 沿地图上的方向移动标记