JSPM

  • Created
  • Published
  • Downloads 59353
  • Score
    100M100P100Q194670F
  • License Apache-2.0

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ng-morph) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    ng-morph

    npm version downloads telegram chat

    Code mutations were never easier than now.

    npm i --save-dev ng-morph

    You also need @angular-devkit/core and @angular-devkit/schematics to be installed.

    What is it?

    It is a large set of tools for both global code base updates in your project and speeding up your work on Angular schematics. It has ts-morph under the hood and allows you to manipulate with safe TypeScript AST.

    Why is it better than default schematics?

    🦅 You can quickly write migrations for your own project and run it as a simple script

    🛠 There are many tools made for working with Angular. You can easily find and manipulate TS and Ng entities.

    ✅ You work with an abstract tree and it can be replaced, for example, with virtual tree for testing instead of real file system. So, you can test your schematics rapidly fast.

    How to start

    Install the package and visit our documentation

    For example, this is how ng-morph setup looks for migrating your own project:

    import {setActiveProject, createProject, getImports, NgMorphTree} from 'ng-morph';
    
    /**
     * set all ng-morph functions to work with the all TS and JSON files
     * of the current project
     * */
    setActiveProject(createProject(new NgMorphTree(), '/', ['**/*.ts', '**/*.json']));
    
    /**
     * This simple migration gets all imports from the project TS files and
     * replaces 'old' substring with 'new'
     * */
    const imports = getImports('some/path/**.ts', {
      moduleSpecifier: '@morph-old*',
    });
    
    editImports(imports, importEntity => ({
      moduleSpecifier: importEntity.moduleSpecifier.replace('old', 'new'),
    }));
    
    /**
     * All changes are made in a virtual project.
     * You can save them when it is time
     * */
    saveActiveProject();

    You can check it out on Stackblitz playground

    Core team

    Igor Katsuba
    Igor Katsuba
    Roman Sedov
    Roman Sedov

    ng-morph is a part of Taiga UI libraries family which is backed and used by a large enterprise. This means you can rely on timely support and continuous development.

    License

    🆓 Feel free to use our library in your commercial and private applications

    All ng-morph packages are covered by Apache 2.0

    Read more about this license here