broccoli-typescript-compiler

Build Status Build status

A Broccoli plugin which compiles TypeScript files.

How to install?

$ npm install broccoli-typescript-compiler --save-dev

How to use?

var typescript = require("broccoli-typescript-compiler").default;
var cjsTree = typescript(inputTree, {
  tsconfig: {
    compilerOptions: {
      module: "commonjs",
      target: "es5",
      moduleResolution: "node",
      newLine: "LF",
      rootDir: "src",
      outDir: "dist",
      sourceMap: true,
      declaration: true,
    },
    files: ["src/index.ts", "src/tests/**"],
  },
  throwOnError: false,
  annotation: "compile program",
});

Config Options:

tsconfig:

annotation:

An optional string, which when provide should be a descriptive annotation. Useful for debugging, to tell multiple instances of the same plugin apart.

throwOnError

An optional boolean, defaulting to false. If set to true, will cause the build to break on errors.

note: if process.env.NODE_ENV === 'production' is true, throwOnError will default to true.

Ways to use:

via the broccoli plugin subclass

This outputs only the emitted files from the compiled program.

const { TypescriptCompiler } = require("broccoli-typescript-compiler");
let compiled = new TypescriptCompiler(input, options);

via function

This outputs only the emitted files from the compiled program.

const { default: typescript } = require("broccoli-typescript-compiler");

let compiled = typescript(src, options);

filter function (passthrough non .ts files)

This selects only ts files from the input to compile and merges emitted files with the non ts files in the input.

const { filterTypescript } = require("broccoli-typescript-compiler");
let output = filterTypescript(input, options);

Development

How to upgrade typescript

  1. Update typescript in package.json
  2. Run yarn run generate-tsconfig-interface
  3. Update vendor/typescript. cd vendor/typescript && git fetch --tags && git checkout v[new-version-of-typescript]
  4. Commit all of the above changes
  5. Run yarn test. There may be some changes needed to the tests to accomidate changes in TypeScript.