Angular逻辑示意图未从模板创建文件

时间:2019-10-21 09:52:13

标签: angular typescript templates angular-schematics

我已经创建了一个有角度的原理图,目的是使用ng generate命令创建样板代码,但是尽管我已阅读并弄乱了所有文章,但仍无法创建文件。

我在原理图工厂中具有以下代码:

export function createComponent(_options: any): Rule {
    return (tree: Tree, _context: SchematicContext) => {
        setupOptions(tree, _options);

        const movePath = normalize(_options.path + '/' + strings.dasherize(_options.name));

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

        return mergeWith(templateSource);
    };
}

与该文件位于同一目录中的文件目录包含“ __name@dasherize__.component.ts”模板,我希望将其作为url('./ files')函数的一部分插入,但我我不确定这是否正在发生。

我的模板文件如下:

import { Component } from '@angular/core';

@Component({
    selector: 'wx-<%= dasherize(componentName) %>'
})
export class <%= classify(componentName) %>Component {

}

我希望在运行原理图时出现一个“创建”,但我得到的只是“什么都没做。”

使用tree.create()可以成功运行以创建文件,这很奇怪,所以我想知道url()或apply()函数是否未按预期运行。

4 个答案:

答案 0 :(得分:1)

确保相对于 dist 文件夹中的原理图文件,“ ./ files”是正确的路径。

也许您需要将其更改为:“ ../../ src / my-schematic / files”。

答案 1 :(得分:0)

查看您的.npmignore和.gitignore。 也许您忽略了所有.ts,这将使/ files文件夹下所有带有.ts的文件都将被忽略。

您的.npmignore可能看起来像这样:

# .npmignore
# Ignores TypeScript files, but keeps definitions and .ts under /files folder.
*.ts
!*.d.ts
!/src/**/files/*.ts

在更新npm软件包之前,请记住要进行npm运行构建以构建ts定义。

答案 2 :(得分:0)

遇到相同的问题,但同时查看源文件和文档here模板文件,应以.ts.template扩展名结尾。

因此,在您的情况下,文件应命名为__name@dasherize__.component.ts.template

输出文件将包含.template扩展名。

链接到@ angular / devkit源:Schematics for Libraries

答案 3 :(得分:0)

一个同事有一个类似的问题,无论我如何更改他的代码,它似乎仍然在做同样令人讨厌的事情。

这归结为最初用于运行原理图的命令。

之前:

node_modules/.bin/schematics ./schematics:my-schematic-name --parameter

应该是什么:

ng generate schematics:my-schematic-name --parameter

您的原理图需要在Angular CLI的上下文中运行,只需在Node中执行即可,它似乎没有输出任何文件,但仍能以某种方式成功执行。