This package has been deprecated

    Author message:

    NOTICE: ts-simple-ast has been renamed to ts-morph and version reset to 1.0.0. Switch at your leisure...

    ts-simple-ast
    TypeScript icon, indicating that this package has built-in type declarations

    21.0.4 • Public • Published

    ts-simple-ast

    npm version Build Status Coverage Status stable

    TypeScript Compiler API wrapper. Provides a simple way to navigate and manipulate TypeScript and JavaScript code.

    NOTICE - LIBRARY RENAMED!

    ts-simple-ast has been renamed to ts-morph.

    Library Development - Progress Update (06 January 2019)

    View information on breaking changes in breaking-changes.md.

    This library is still under early active development. Most common code manipulation/generation use cases are implemented, but there's still a lot of work to do.

    Please open an issue if you find a feature missing or bug that isn't in the issue tracker.

    Report

    View a generated report on what nodes have been wrapped in the wrapped-nodes.md file.

    Documentation

    Work in progress: https://dsherret.github.io/ts-simple-ast/

    Getting Started

    1. Installing
    2. Instantiating
    3. Adding source files
    4. Getting source files
    5. Navigating
    6. Manipulating

    Example

    import { Project } from "ts-simple-ast";
     
    // initialize
    const project = new Project({
        // Optionally specify compiler options, tsconfig.json, virtual file system, and more here.
        // If you initialize with a tsconfig.json, then it will automatically populate the project
        // with the associated source files.
        // Read more: https://dsherret.github.io/ts-simple-ast/setup/
    });
     
    // add source files
    project.addExistingSourceFiles("src/**/*.ts");
    const myClassFile = project.createSourceFile("src/MyClass.ts", "export class MyClass {}");
    const myEnumFile = project.createSourceFile("src/MyEnum.ts", {
        enums: [{
            name: "MyEnum",
            isExported: true,
            members: [{ name: "member" }]
        }]
    });
     
    // get information from ast
    const myClass = myClassFile.getClassOrThrow("MyClass");
    myClass.getName();          // returns: "MyClass"
    myClass.hasExportKeyword(); // returns: true
    myClass.isDefaultExport();  // returns: false
     
    // manipulate ast
    const myInterface = myClassFile.addInterface({
        name: "IMyInterface",
        isExported: true,
        properties: [{
            name: "myProp",
            type: "number"
        }]
    });
     
    myClass.rename("NewName");
    myClass.addImplements(myInterface.getName());
    myClass.addProperty({
        name: "myProp",
        initializer: "5"
    });
     
    project.getSourceFileOrThrow("src/ExistingFile.ts").delete();
     
    // asynchronously save all the changes above
    project.save();
     
    // get underlying compiler node from the typescript AST from any node
    const compilerNode = myClassFile.compilerNode;

    Or navigate existing compiler nodes created with the TypeScript compiler (the ts named export is the TypeScript compiler):

    import { createWrappedNode, ClassDeclaration, ts } from "ts-simple-ast";
     
    // some code that creates a class declaration using the ts object
    const classNode: ts.ClassDeclaration = ...;
     
    // create and use a wrapped node
    const classDec = createWrappedNode(classNode) as ClassDeclaration;
    const firstProperty = classDec.getProperties()[0];
     
    // ... do more stuff here ...

    Resources

    Install

    npm i ts-simple-ast

    DownloadsWeekly Downloads

    46,105

    Version

    21.0.4

    License

    MIT

    Unpacked Size

    1.95 MB

    Total Files

    524

    Last publish

    Collaborators

    • dsherret