gpt4 book ai didi

angular - ClassOptions Schema - Angular 示意图

转载 作者:太空狗 更新时间:2023-10-29 18:35:55 25 4
gpt4 key购买 nike

在@angular-devkit/schematics readme ,我对 ClassOptions 在做什么感到困惑。

如果将代码添加到项目中,它将显示错误,因为该文件不存在。

关于它的用途的想法+一个例子?

import { strings } from '@angular-devkit/core';
import {
Rule, SchematicContext, SchematicsException, Tree,
apply, branchAndMerge, mergeWith, template, url,
} from '@angular-devkit/schematics';
import { Schema as ClassOptions } from './schema';

export default function (options: ClassOptions): Rule {
return (tree: Tree, context: SchematicContext) => {
if (!options.name) {
throw new SchematicsException('Option (name) is required.');
}

const templateSource = apply(
url('./files'),
[
template({
...strings,
...options,
}),
]
);

return branchAndMerge(mergeWith(templateSource));
};
}

最佳答案

示例中的schema 文件是用this function 生成的 typescript 文件。在 build process 期间在 angular-cli 中。这是 angular-cli 中使用的一种模式,该示例将无法正常工作。您可以在像 service 这样的官方 Angular 示意图之一中看到此类示意图源的完整示例。 .

但是请记住,ClassOptions 只是一个指定 Angular Schematic 选项的对象。它可以来自任何地方,并且与原理图库解耦。这是 responsibility of the tooling为原理图库提供选项。

这是一个使用 reference cli 的类似示例.

生成一个简单的原理图:

schematics blank --name=test

将架构文件的路径添加到collection.json:

{
"$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
"schematics": {
"test": {
"description": "A blank schematic.",
"factory": "./test/index#test",
"schema": "./test/schema.json"
}
}
}

创建一个schema.json:

{
"$schema": "http://json-schema.org/schema",
"id": "MySchema",
"title": "My Schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"default": "cactus"
}
}
}

index.ts 中的工厂现在将从 schema.json 文件中获取默认选项。

import { Rule, SchematicContext, Tree } from "@angular-devkit/schematics";

// You don't have to export the function as default. You can also have more than one rule factory
// per file.
export function test(_options: any): Rule {
return (tree: Tree, _context: SchematicContext) => {
tree.create(_options.name || "hello", "world");
return tree;
};
}

使用 schema.json 中的默认值运行 cli:

schematics .:test --dry-run=false
...
CREATE /cactus (5 bytes)

使用用户定义的选项运行 cli:

schematics .:test --name=bean--dry-run=false
...
CREATE /bean (5 bytes)

关于angular - ClassOptions Schema - Angular 示意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com