在为外部角度示意图调用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的步骤进行操作,如果我创建了一个新的角度项目(ng new newProject),然后在CLI外部运行ng add(ng add ng-momentum),则会得到一个新的角度项目和ng-momentum应用。
实际行为:我收到以下错误:“无法从“ C:\ wherever \ your \ project \ is”中找到模块“ ng-momentum”。
似乎我缺少了一些东西,但不完全确定是什么。请让我知道是否需要其他信息,或者有任何疑问。
提前谢谢!
答案 0 :(得分:1)
我遇到了同样的问题,并找到了解决方案。
问题在于,要运行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,
}
}
}
答案 1 :(得分:0)
我很难从自定义添加原理图中调用externalSchematic,实际上,要从ng add调用的库必须安装在本地package.json中。
externalSchematic调用正在寻找package.json,除非将其安装在根逻辑示意图项目中,否则它将无法正常工作。
我希望这与这个问题有关!