zoukankan      html  css  js  c++  java
  • [Schematics] 0. Schematics "Hello World"

    1. Install schematics cli:

    npm i -g @angular-devkit/schematics-cli@latest

    2. Then run schematics to create a new blank project:

    schematics blank --name=my-component

    It creates folder with number of files for you.

    CREATE /my-component/README.md (639 bytes)
    CREATE /my-component/package.json (539 bytes)
    CREATE /my-component/tsconfig.json (656 bytes)
    CREATE /my-component/.gitignore (191 bytes)
    CREATE /my-component/.npmignore (64 bytes)
    CREATE /my-component/src/collection.json (231 bytes)
    CREATE /my-component/src/my-component/index.ts (318 bytes)
    CREATE /my-component/src/my-component/index_spec.ts (474 bytes)

    3. One important thing to do now, open .npmignore, remove line:

    *.ts

    It is because when you do `npm pack` to publish your schematics, it will remove all ts files, which is not what we want.

    4. src/collection.json:

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

    The highlighted part, is the name of your schematics. Run the following command from the my-component directory.

    schematics .:my-component

    By default schematics run in staging mode, which means it won't generate any files for you. Instaed you can run:

    schematics .:my-component --dry-run=false

    5. Let’s do something slightly more interesting than making sure it runs and create a hello.ts file. Modify my-component/index.ts to have a tree.create() command.

    import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
    
    export function myComponent(_options: any): Rule {
      return (tree: Tree, _context: SchematicContext) => {
        tree.create('hello.ts', 'console.log("Hello, World")');
        return tree;
      };
    }
    describe('my-component', () => {
      it('works', () => {
        const runner = new SchematicTestRunner('schematics', collectionPath);
        const tree = runner.runSchematic('my-component', {}, Tree.empty());
    
        expect(tree.files).toEqual(['/hello.ts']);
      });
    });
  • 相关阅读:
    Mac ssh 免密码登录 Mac 或者 Linux
    windows系统下将nginx作为系统服务启动
    eclipse的Git忽略某些不需要提交的文件
    spring boot 日志介绍 以及 logback配置示例
    nginx for Windows
    Eclipse 中Git的使用及如何解决冲突
    jquery是如何封装的
    SpringMVC接收json对象
    JSP中使用JSTL,并且解决XSS安全问题
    timestamp Invalid default value
  • 原文地址:https://www.cnblogs.com/Answer1215/p/11739361.html
Copyright © 2011-2022 走看看