Zero-config CLI for TypeScript package development

Overview

tsdx

Blazing Fast Blazing Fast Blazing Fast Discord

Despite all the recent hype, setting up a new TypeScript (x React) library can be tough. Between Rollup, Jest, tsconfig, Yarn resolutions, ESLint, and getting VSCode to play nicely....there is just a whole lot of stuff to do (and things to screw up). TSDX is a zero-config CLI that helps you develop, test, and publish modern TypeScript packages with ease--so you can focus on your awesome new library and not waste another afternoon on the configuration.

Features

TSDX comes with the "battery-pack included" and is part of a complete TypeScript breakfast:

  • Bundles your code with Rollup and outputs multiple module formats (CJS & ESM by default, and also UMD if you want) plus development and production builds
  • Comes with treeshaking, ready-to-rock lodash optimizations, and minification/compression
  • Live reload / watch-mode
  • Works with React
  • Human readable error messages (and in VSCode-friendly format)
  • Bundle size snapshots
  • Opt-in to extract invariant error codes
  • Jest test runner setup with sensible defaults via tsdx test
  • ESLint with Prettier setup with sensible defaults via tsdx lint
  • Zero-config, single dependency
  • Escape hatches for customization via .babelrc.js, jest.config.js, .eslintrc.js, and tsdx.config.js

Quick Start

npx tsdx create mylib
cd mylib
yarn start

That's it. You don't need to worry about setting up TypeScript or Rollup or Jest or other plumbing. Just start editing src/index.ts and go!

Below is a list of commands you will probably find useful:

npm start or yarn start

Runs the project in development/watch mode. Your project will be rebuilt upon changes. TSDX has a special logger for your convenience. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab.

Your library will be rebuilt if you make edits.

npm run build or yarn build

Bundles the package to the dist folder. The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module).

npm test or yarn test

Runs your tests using Jest.

npm run lint or yarn lint

Runs Eslint with Prettier on .ts and .tsx files. If you want to customize eslint you can add an eslint block to your package.json, or you can run yarn lint --write-file and edit the generated .eslintrc.js file.

prepare script

Bundles and packages to the dist folder. Runs automatically when you run either npm publish or yarn publish. The prepare script will run the equivalent of npm run build or yarn build. It will also be run if your module is installed as a git dependency (ie: "mymodule": "github:myuser/mymodule#some-branch") so it can be depended on without checking the transpiled code into git.

Optimizations

Aside from just bundling your module into different formats, TSDX comes with some optimizations for your convenience. They yield objectively better code and smaller bundle sizes.

After TSDX compiles your code with TypeScript, it processes your code with 3 Babel plugins:

Development-only Expressions + Treeshaking

babel-plugin-annotate-pure-calls + babel-plugin-dev-expressions work together to fully eliminate dead code (aka treeshake) development checks from your production code. Let's look at an example to see how it works.

Imagine our source code is just this:

// ./src/index.ts
export const sum = (a: number, b: number) => {
  if (process.env.NODE_ENV !== 'production') {
    console.log('Helpful dev-only error message');
  }
  return a + b;
};

tsdx build will output an ES module file and 3 CommonJS files (dev, prod, and an entry file). If you want to specify a UMD build, you can do that as well. For brevity, let's examine the CommonJS output (comments added for emphasis):

// Entry File
// ./dist/index.js
'use strict';

// This determines which build to use based on the `NODE_ENV` of your end user.
if (process.env.NODE_ENV === 'production') {
  module.exports = require('./mylib.cjs.production.js');
} else {
  module.exports = require('./mylib.cjs.development.js');
}
// CommonJS Development Build
// ./dist/mylib.cjs.development.js
'use strict';

const sum = (a, b) => {
  {
    console.log('Helpful dev-only error message');
  }

  return a + b;
};

exports.sum = sum;
//# sourceMappingURL=mylib.cjs.development.js.map
// CommonJS Production Build
// ./dist/mylib.cjs.production.js
'use strict';
exports.sum = (s, t) => s + t;
//# sourceMappingURL=test-react-tsdx.cjs.production.js.map

AS you can see, TSDX stripped out the development check from the production code. This allows you to safely add development-only behavior (like more useful error messages) without any production bundle size impact.

For ESM build, it's up to end-user to build environment specific build with NODE_ENV replace (done by Webpack 4 automatically).

Rollup Treeshaking

TSDX's rollup config removes getters and setters on objects so that property access has no side effects. Don't do it.

Advanced babel-plugin-dev-expressions

TSDX will use babel-plugin-dev-expressions to make the following replacements before treeshaking.

__DEV__

Replaces

if (__DEV__) {
  console.log('foo');
}

with

if (process.env.NODE_ENV !== 'production') {
  console.log('foo');
}

IMPORTANT: To use __DEV__ in TypeScript, you need to add declare var __DEV__: boolean somewhere in your project's type path (e.g. ./types/index.d.ts).

// ./types/index.d.ts
declare var __DEV__: boolean;

Note: The dev-expression transform does not run when NODE_ENV is test. As such, if you use __DEV__, you will need to define it as a global constant in your test environment.

invariant

Replaces

invariant(condition, 'error message here');

with

if (!condition) {
  if ('production' !== process.env.NODE_ENV) {
    invariant(false, 'error message here');
  } else {
    invariant(false);
  }
}

Note: TSDX doesn't supply an invariant function for you, you need to import one yourself. We recommend https://github.com/alexreardon/tiny-invariant.

To extract and minify invariant error codes in production into a static codes.json file, specify the --extractErrors flag in command line. For more details see Error extraction docs.

warning

Replaces

warning(condition, 'dev warning here');

with

if ('production' !== process.env.NODE_ENV) {
  warning(condition, 'dev warning here');
}

Note: TSDX doesn't supply a warning function for you, you need to import one yourself. We recommend https://github.com/alexreardon/tiny-warning.

Using lodash

If you want to use a lodash function in your package, TSDX will help you do it the right way so that your library does not get fat shamed on Twitter. However, before you continue, seriously consider rolling whatever function you are about to use on your own. Anyways, here is how to do it right.

First, install lodash and lodash-es as dependencies

yarn add lodash lodash-es

Now install @types/lodash to your development dependencies.

yarn add @types/lodash --dev

Import your lodash method however you want, TSDX will optimize it like so.

// ./src/index.ts
import kebabCase from 'lodash/kebabCase';

export const KebabLogger = (msg: string) => {
  console.log(kebabCase(msg));
};

For brevity let's look at the ES module output.

{console.log(o(e))};export{e as KebabLogger}; //# sourceMappingURL=test-react-tsdx.esm.production.js.map ">
import o from"lodash-es/kebabCase";const e=e=>{console.log(o(e))};export{e as KebabLogger};
//# sourceMappingURL=test-react-tsdx.esm.production.js.map

TSDX will rewrite your import kebabCase from 'lodash/kebabCase' to import o from 'lodash-es/kebabCase'. This allows your library to be treeshakable to end consumers while allowing to you to use @types/lodash for free.

Note: TSDX will also transform destructured imports. For example, import { kebabCase } from 'lodash' would have also been transformed to `import o from "lodash-es/kebabCase".

Error extraction

After running --extractErrors, you will have a ./errors/codes.json file with all your extracted invariant error codes. This process scans your production code and swaps out your invariant error message strings for a corresponding error code (just like React!). This extraction only works if your error checking/warning is done by a function called invariant.

Note: We don't provide this function for you, it is up to you how you want it to behave. For example, you can use either tiny-invariant or tiny-warning, but you must then import the module as a variable called invariant and it should have the same type signature.

⚠️ Don't forget: you will need to host the decoder somewhere. Once you have a URL, look at ./errors/ErrorProd.js and replace the reactjs.org URL with yours.

Known issue: our transformErrorMessages babel plugin currently doesn't have sourcemap support, so you will see "Sourcemap is likely to be incorrect" warnings. We would love your help on this.

TODO: Simple guide to host error codes to be completed

Customization

Rollup

⚠️ Warning:
These modifications will override the default behavior and configuration of TSDX. As such they can invalidate internal guarantees and assumptions. These types of changes can break internal behavior and can be very fragile against updates. Use with discretion!

TSDX uses Rollup under the hood. The defaults are solid for most packages (Formik uses the defaults!). However, if you do wish to alter the rollup configuration, you can do so by creating a file called tsdx.config.js at the root of your project like so:

// Not transpiled with TypeScript or Babel, so use plain Es6/Node.js!
module.exports = {
  // This function will run for each entry/format/env combination
  rollup(config, options) {
    return config; // always return a config.
  },
};

The options object contains the following:

export interface TsdxOptions {
  // path to file
  input: string;
  // Name of package
  name: string;
  // JS target
  target: 'node' | 'browser';
  // Module format
  format: 'cjs' | 'umd' | 'esm' | 'system';
  // Environment
  env: 'development' | 'production';
  // Path to tsconfig file
  tsconfig?: string;
  // Is error extraction running?
  extractErrors?: boolean;
  // Is minifying?
  minify?: boolean;
  // Is this the very first rollup config (and thus should one-off metadata be extracted)?
  writeMeta?: boolean;
  // Only transpile, do not type check (makes compilation faster)
  transpileOnly?: boolean;
}

Example: Adding Postcss

const postcss = require('rollup-plugin-postcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');

module.exports = {
  rollup(config, options) {
    config.plugins.push(
      postcss({
        plugins: [
          autoprefixer(),
          cssnano({
            preset: 'default',
          }),
        ],
        inject: false,
        // only write out CSS for the first bundle (avoids pointless extra files):
        extract: !!options.writeMeta,
      })
    );
    return config;
  },
};

Babel

You can add your own .babelrc to the root of your project and TSDX will merge it with its own Babel transforms (which are mostly for optimization), putting any new presets and plugins at the end of its list.

Jest

You can add your own jest.config.js to the root of your project and TSDX will shallow merge it with its own Jest config.

ESLint

You can add your own .eslintrc.js to the root of your project and TSDX will deep merge it with its own ESLint config.

patch-package

If you still need more customizations, we recommend using patch-package so you don't need to fork. Keep in mind that these types of changes may be quite fragile against version updates.

Inspiration

TSDX was originally ripped out of Formik's build tooling. TSDX has several similarities to @developit/microbundle, but that is because Formik's Rollup configuration and Microbundle's internals had converged around similar plugins.

Comparison with Microbundle

Some key differences include:

  • TSDX includes out-of-the-box test running via Jest
  • TSDX includes out-of-the-box linting and formatting via ESLint and Prettier
  • TSDX includes a bootstrap command with a few package templates
  • TSDX allows for some lightweight customization
  • TSDX is TypeScript focused, but also supports plain JavaScript
  • TSDX outputs distinct development and production builds (like React does) for CJS and UMD builds. This means you can include rich error messages and other dev-friendly goodies without sacrificing final bundle size.

API Reference

tsdx watch

Description
  Rebuilds on any change

Usage
  $ tsdx watch [options]

Options
  -i, --entry           Entry module
  --target              Specify your target environment  (default web)
  --name                Specify name exposed in UMD builds
  --format              Specify module format(s)  (default cjs,esm)
  --tsconfig            Specify your custom tsconfig path (default <root-folder>/tsconfig.json)
  --verbose             Keep outdated console output in watch mode instead of clearing the screen
  --onFirstSuccess      Run a command on the first successful build
  --onSuccess           Run a command on a successful build
  --onFailure           Run a command on a failed build
  --noClean             Don't clean the dist folder
  --transpileOnly       Skip type checking
  -h, --help            Displays this message

Examples
  $ tsdx watch --entry src/foo.tsx
  $ tsdx watch --target node
  $ tsdx watch --name Foo
  $ tsdx watch --format cjs,esm,umd
  $ tsdx watch --tsconfig ./tsconfig.foo.json
  $ tsdx watch --noClean
  $ tsdx watch --onFirstSuccess "echo The first successful build!"
  $ tsdx watch --onSuccess "echo Successful build!"
  $ tsdx watch --onFailure "echo The build failed!"
  $ tsdx watch --transpileOnly

tsdx build

Description
  Build your project once and exit

Usage
  $ tsdx build [options]

Options
  -i, --entry           Entry module
  --target              Specify your target environment  (default web)
  --name                Specify name exposed in UMD builds
  --format              Specify module format(s)  (default cjs,esm)
  --extractErrors       Opt-in to extracting invariant error codes
  --tsconfig            Specify your custom tsconfig path (default <root-folder>/tsconfig.json)
  --transpileOnly       Skip type checking
  -h, --help            Displays this message

Examples
  $ tsdx build --entry src/foo.tsx
  $ tsdx build --target node
  $ tsdx build --name Foo
  $ tsdx build --format cjs,esm,umd
  $ tsdx build --extractErrors
  $ tsdx build --tsconfig ./tsconfig.foo.json
  $ tsdx build --transpileOnly

tsdx test

This runs Jest, forwarding all CLI flags to it. See https://jestjs.io for options. For example, if you would like to run in watch mode, you can run tsdx test --watch. So you could set up your package.json scripts like:

{
  "scripts": {
    "test": "tsdx test",
    "test:watch": "tsdx test --watch",
    "test:coverage": "tsdx test --coverage"
  }
}

tsdx lint

Description
  Run eslint with Prettier

Usage
  $ tsdx lint [options]

Options
  --fix               Fixes fixable errors and warnings
  --ignore-pattern    Ignore a pattern
  --max-warnings      Exits with non-zero error code if number of warnings exceed this number  (default Infinity)
  --write-file        Write the config file locally
  --report-file       Write JSON report to file locally
  -h, --help          Displays this message

Examples
  $ tsdx lint src
  $ tsdx lint src --fix
  $ tsdx lint src test --ignore-pattern test/foo.ts
  $ tsdx lint src test --max-warnings 10
  $ tsdx lint src --write-file
  $ tsdx lint src --report-file report.json

Contributing

Please see the Contributing Guidelines.

Author

License

MIT

Contributors

Thanks goes to these wonderful people (emoji key):


Jared Palmer

📖 🎨 👀 🔧 ⚠️ 🚧 💻

swyx

🐛 💻 📖 🎨 🤔 🚇 🚧 👀

Jason Etcovitch

🐛 ⚠️

Sam Kvale

💻 ⚠️ 🐛 📖 👀 🤔 💬

Lucas Polito

💻 📖 💬

Steven Kalt

💻

Harry Hedger

🤔 📖 💻 💬

Arthur Denner

🐛 💻 💬

Carl

🤔 📖 💻 ⚠️ 💬

Loïc Mahieu

💻 ⚠️

Sebastian Sebald

📖 💻 ⚠️

Karl Horky

📖 🤔

James George

📖

Anton Gilgur

🚧 📖 💻 🐛 💡 🤔 💬 👀 ⚠️

Kyle Holmberg

💻 💡 ⚠️ 👀 💬

Sigurd Spieckermann

🐛 💻

Kristofer Giltvedt Selbekk

💻

Tomáš Ehrlich

🐛 💻

Kyle Johnson

🐛 💻

Etienne Dldc

🐛 💻 ⚠️

Florian Knop

🐛

Gonzalo D'Elia

💻

Alec Larson

💻 👀 🤔 💬

Justin Grant

🐛 🤔 💬

Jirat Ki.

💻 ⚠️ 🐛

Nate Moore

💻 🤔

Haz

📖

Basti Buck

💻 🐛

Pablo Saez

💻 🐛

Jake Gavin

🐛 💻

Grant Forrest

💻 ⚠️ 🐛

Sébastien Lorber

💻

Kirils Ladovs

📖

Enes Tüfekçi

💻 📖

Bogdan Chadkin

👀 💬 🤔

Daniel K.

💻 📖 ⚠️ 🤔 🐛

Quentin Sommer

📖

Hyan Mandian

💻 ⚠️

Sung M. Kim

🐛 💻

John Johnson

💻 📖

Jun Tomioka

💻 ⚠️

Leonardo Dino

💻 🐛

Honza Břečka

💻 🐛

Ward Loos

💻 🤔

Brian Bugh

💻 🐛

Cody Carse

📖

Josh Biddick

💻

Jose Albizures

💻 ⚠️ 🐛

Rahel Lüthy

📖

Michael Edelman

💻 🤔

Charlike Mike Reagent

👀 💻 🤔

Frederik Wessberg

💬

Elad Ossadon

💻 ⚠️ 🐛

Kevin Kipp

💻

Matija Folnovic

💻 📖

Andrew

💻

Ryan Castner

💻 ⚠️ 🤔

Yordis Prieto

💻

NCPhillips

📖

Arnaud Barré

💻 📖

Peter W

📖

Joe Flateau

💻 📖

H.John Choi

📖

Jon Stevens

📖 🤔 🐛

greenkeeper[bot]

🚇 💻

allcontributors[bot]

🚇 📖

dependabot[bot]

🚇 🛡️ 💻

GitHub

🚇

Eugene Samonenko

⚠️ 💡 💬 🤔

Joseph Wang

🐛

Kotaro Sugawara

🐛 💻

Semesse

💻

Bojan Mihelac

💻

Dan Dascalescu

📖

Yuriy Burychka

💻

Jesse Hoyos

💻

Mike Deverell

💻

Nick Hehr

💻 📖 💡

Bnaya Peretz

🐛 💻

Andres Alvarez

💻 📖 💡

Yaroslav K.

📖

Dragoș Străinu

🤔

George Varghese M.

💻 📖 ⚠️

Reinis Ivanovs

🤔 💬

Orta Therox

💬 📖

Martijn Saly

🐛

Alex Johansson

📖

hb-seb

💻

seungdols

🐛

Béré Cyriac

🐛

Dmitriy Serdtsev

🐛

Vladislav Moiseev

💻

Felix Mosheev

🐛 📖

Ludovico Fischer

💻

Altrim Beqiri

🐛 💻 ⚠️

Tane Morgan

🐛 💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Update rollup to the latest version 🚀

    Update rollup to the latest version 🚀


    ☝️ Important announcement: Greenkeeper will be saying goodbye 👋 and passing the torch to Snyk on June 3rd, 2020! Find out how to migrate to Snyk and more at greenkeeper.io


    The dependency rollup was updated from 1.32.1 to 2.0.0.

    This version is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.


    Publisher: lukastaegert License: MIT

    Find out more about this release.


    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    solution: duplicate greenkeeper topic: Node 10+ topic: Rollup 2 
    opened by greenkeeper[bot] 46
  • test/ dir is in `include`, non-spec TS files (e.g. test utils) break build with v0.13 rootDir: `./src`

    test/ dir is in `include`, non-spec TS files (e.g. test utils) break build with v0.13 rootDir: `./src`

    Current Behavior

    Prior to v0.13 #504 , I could put a file into my test folder that contained utility code for tests and it would get compiled without a problem.

    test/TestUtils.tsx

    Now, when I tsdx build, I see this error:

    rpt2: options error TS6059: File '/mui-rff/test/TestUtils.tsx' is not under 'rootDir' '/mui-rff/src'. 'rootDir' is expected to contain all source files.

    Expected behavior

    I have a place to put utility code for tests.

    Suggested solution(s)

    No idea, but you have a list of 3rd parties using this project and it would be nice if you would start to test future versions of tsdx against these projects to see if you break peoples stuff and can then use that to find out how to tell people how to fix their broken stuff.

    Your environment

    | Software | Version(s) | | ---------------- | ---------- | | TSDX | v0.13 | | TypeScript | 3.8.3 | | npm/Yarn | 6.13.7 / 1.22.4 | | Node | v13.11.0 | | Operating System | OSX Catalina |

    kind: regression kind: support solution: workaround available scope: templates 
    opened by lookfirst 43
  • Support Async/Await in Rollup Plugins by migrating to `@wessberg/rollup-plugin-ts`

    Support Async/Await in Rollup Plugins by migrating to `@wessberg/rollup-plugin-ts`

    This is a WIP re #200. Sadly, I cannot, for the life of me, get the last two tests to pass. A screenshot of the issue is included below. It looks related to our babel/typescript relationship-- which is complex. I'm happy to continue digging in, but figured I would surface in case anyone could point me in the right direction.

    FWIW, it looks like the new plugin has a fairly robust integration with babel. I'm not sure re purpose of the custom tsdx babel plugin, but could we accomplish the same with a .babelrc or babel.config.js file? If so, the new plugin looks capable of managing the babel stage. See Meaw.

    Screen Shot 2019-09-12 at 8 23 31 PM

    closes #200

    topic: v0.10.x topic: rollup-plugin-typescript2 
    opened by medelman17 32
  • noEmit and skipLibCheck should be on by default in TS compiler options

    noEmit and skipLibCheck should be on by default in TS compiler options

    This is a related issue to #352. The build script works with rollup.js, not tsc, so the noEmit option should be enabled by default. Users running npx tsc shouldn't expect to have to specify --noEmit, because using tsc is a normal part of TS development. Currently npx tsc will clutter the src directory with transpiled files, which can be difficult to clean up if there are uncommitted changes mixed in.

    This is important because without tsc there is no way to do project-wide type checking. The build script will only stop at the first error. The test runner will report errors, but only for files that are tested, and it's also the wrong place for type checking (#521).

    kind: feature kind: optimization scope: templates 
    opened by slikts 31
  • [tsdx-config] Css module build fail

    [tsdx-config] Css module build fail

    Hi guys, I just installed tsdx to try out the new functionality of the config file. The step I followed are:

    1. in the root of the project I created a file called tsdx.config.js:
    const postcss = require('rollup-plugin-postcss');
    const autoprefixer = require('autoprefixer');
    const cssnano = require('cssnano');
    
    module.exports = {
      rollup(config, options) {
        config.plugins.push(
          postcss({
            plugins: [
              autoprefixer(),
              cssnano({
                preset: 'default',
              }),
            ],
            inject: false,
            // only write out CSS for the first bundle (avoids pointless extra files):
            extract: !!options.writeMeta,
            modules: true,
          })
        );
        return config;
      },
    };
    
    1. I installed the 3 dependencies that are required;
    2. in the src folder I create a file called: style.module.css
    3. in the index.tsx I imported it:
    import * as React from 'react';
    import * as style './style.module.css';
    // Delete me
    export const Thing = () => {
      return (
        <div className={style.test}>the snozzberries taste like snozzberries</div>
      );
    };
    
    1. running yarn start
    ✖ Failed to compile
    (typescript) Error: /Users/daniele/Desktop/testLibTsDx/src/index.tsx(2,19): syntax error TS1005: 'from' expected.
    Error: /Users/daniele/Desktop/testLibTsDx/src/index.tsx(2,19): syntax error TS1005: 'from' expected.
        at error (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup/dist/rollup.js:9429:30)
        at throwPluginError (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup/dist/rollup.js:15701:12)
        at Object.error (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup/dist/rollup.js:15756:24)
        at Object.error (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup/dist/rollup.js:16148:38)
        at RollupContext.error (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:17187:30)
        at lodash_3 (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:24954:23)
        at arrayEach (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:532:11)
        at forEach (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:9360:14)
        at printDiagnostics (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:24927:5)
        at Object.transform (/Users/daniele/Desktop/testLibTsDx/node_modules/rollup-plugin-typescript2/dist/rollup-plugin-typescript2.cjs.js:26754:17)
    
    ✨  Done in 2.18s.
    

    Did I miss something?

    kind: support scope: integration 
    opened by daniele-zurico 29
  • No .d.ts created after update to 0.10.0

    No .d.ts created after update to 0.10.0

    Current Behavior

    in 0.10.0

    //index.ts
    import { PrivateRoute, PublicRoute } from "./components";
    
    export {
      PrivateRoute,
      PublicRoute
    }
    

    will generate

    //index.d.ts
    export { PrivateRoute, PublicRoute };
    

    and directories of components with .d.ts aren't created img

    Expected behavior

    In 0.9.3 the .d.ts are created: img

    //index.d.ts
    import { PrivateRoute, PublicRoute } from "./components";
    export { PrivateRoute, PublicRoute };
    

    Suggested solution(s)

    Additional context

    Your environment

    |Software|Version(s)| |--------|----------| |TSDX|>=0.10.0| |TypeScript|^3.6.4| |Browser|| |npm/Yarn|v1.17.3| |Operating System|Arch|

    kind: bug scope: upstream topic: v0.10.x 
    opened by dattebayorob 26
  • Support Testing with imports of JS files in ESM

    Support Testing with imports of JS files in ESM

    Current Behavior

    When running test files with that contain ES6 module imports with Jest, I get the following error:

    Jest encountered an unexpected token
    
        This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.
    
        By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".
    
        Here's what you can do:
         • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
         • If you need a custom transformation specify a "transform" option in your config.
         • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
    
        You'll find more details and examples of these config options in the docs:
        https://jestjs.io/docs/en/configuration.html
    

    Is there an existing recommendation for handling ES6/ESNext module imports, if so, could we add documentation around this? If it doesn't exist, could we add recommendation on how to handle it? I'm happy to help if I can. Could this be a TSDX feature, to switch on and off?

    Desired Behavior

    Either handled by default by TSDX, or there is clear recommendations on how best to handle this.

    Suggested Solution

    Happy to add docs with the recommendation to resolve, although I'm not sure what the recommendations are as yet.

    Who does this impact? Who is this for?

    Users importing other packages that use ES6.

    Describe alternatives you've considered

    I considered using babel-jest and configuring it myself, but this seems to make TSDX a little redundant.

    kind: feature 
    opened by daraclare 21
  • tsdx ignores tsconfig.json

    tsdx ignores tsconfig.json "extends" keyword

    Current Behavior

    There's an extends feature in tsconfig which allows configuration inheritance across multiple tsconfig files. This however isn't recognized in tsdx, which parses tsconfig here:

    https://github.com/jaredpalmer/tsdx/blob/4f6de1083393057903a1837fb6658f8058ee832f/src/createRollupConfig.ts#L46-L49

    The JSON object is used as-is, instead of drilling up to resolve parent config.

    Expected behavior

    tsdx should process extends just like tsc does.

    Suggested solution(s)

    In a quick look through TypeScript's source code I couldn't find the place where extends is handled, but it's possible that TypeScript's exported tsconfig parsing functions might handle extends for us automatically. See https://github.com/microsoft/TypeScript/blob/760393f893358a462b00eef7e8fb92342b0f71ad/lib/typescript.d.ts#L3639-L3647 what what TS offers in its API. The implementation is here: https://github.com/Microsoft/TypeScript/blob/6487d1ffe0d903b1e55a187ddeb973fe0d445a2f/src/compiler/parser.ts#L717

    Additional context

    This problem is similar to #483 in that both this issue and that one are caused by parsing tsconfig differently than tsc does.

    Your environment

    | Software | Version(s) | | ---------------- | ---------- | | TSDX | [email protected] | TypeScript | [email protected] | Browser | n/a (this is a build issue) | npm/Yarn | [email protected] | Node | v12.13.1 | Operating System | MacOS Catalina 10.15.2

    kind: bug help wanted 
    opened by justingrant 20
  • Tree-shaking not working as expected

    Tree-shaking not working as expected

    Current Behavior

    When building a project with tsdx and exporting multiple things (all named exports), the dependencies (imports) of unused modules (that is, modules the consuming project does not import) all end up in the final consuming bundle. So, importing Thing1 will also import dependencies of Thing2 (even though Thing2 itself is tree-shaken away). I'm probably just doing something wrong or misunderstanding what's possible, though.

    Expected behavior

    I was hoping that if I only import Thing1, Thing2's dependencies (imports) would not be included in the final consuming bundle.

    Suggested solution(s)

    Unknown (so far), might not even be a bug.

    Additional context

    Reproduction (includes build output and webpack-bundle-analyzer):

    https://github.com/wKovacs64/tsdx-treeshaking-test

    I've gotten around this in the past with a Rollup config that takes all the source files as an array of inputs instead of a single entry point and outputs them all individually to a directory (Rollup output.dir) rather than a single output file (Rollup output.file like tsdx uses), but that may not be the right:tm: solution nor does it look possible at the moment as tsdx does not currently support a customized Rollup configuration.

    Your environment

    | Software | Version(s) | | ---------------- | ---------- | | TSDX | 0.7.2 | TypeScript | 3.5.3 | Browser | N/A | npm/Yarn | Yarn 1.17.3 | Operating System | Windows 10, macOS

    opened by wKovacs64 19
  • (fix): added rollup plugin @zerollup/ts-transform-paths, injected as …

    (fix): added rollup plugin @zerollup/ts-transform-paths, injected as …

    …transformer in rollup-plugin-typescript2 config

    closes https://github.com/jaredpalmer/tsdx/issues/336

    decided to not fix tsdx configs but provide info for solution: https://github.com/jaredpalmer/tsdx/issues/379#issuecomment-568202209

    Edit/Summary From @jaredpalmer:

    When using tsdx with larger packages, it is useful to use typescript path aliasing to avoid relative imports. This change allows tsdx (rollup and typescript) to respect such options.

    Before

    import Button from 'components/Button'
    // becomes
    const Button = require('components/button') // omitting interop stuff
    

    After

    import Button from 'components/Button'
    // becomes
    const Button = require('./components/button') // omitting interop stuff
    
    topic: TS Paths Aliases 
    opened by ambroseus 18
  • An in-range update of rollup is breaking the build 🚨

    An in-range update of rollup is breaking the build 🚨

    The dependency rollup was updated from 1.26.3 to 1.26.4.

    🚨 View failing branch.

    This version is covered by your current version range and after updating it in your project the build failed.

    rollup is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

    Status Details
    • Test on node 12.x and macOS-latest: null
    • Test on node 12.x and windows-latest: null
    • Test on node 12.x and ubuntu-latest: null
    • Test on node 10.x and macOS-latest: null
    • Test on node 10.x and windows-latest: null
    • Test on node 10.x and ubuntu-latest: null
    • Test on node 8.12.x and macOS-latest: null
    • Test on node 8.12.x and windows-latest: null
    • Test on node 8.12.x and ubuntu-latest: null

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper Bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 18
  • Test files highlighted in red, plus jest error in console, but test passes

    Test files highlighted in red, plus jest error in console, but test passes

    Current Behavior

    Although test runs fine, but test files are displayed in red immediately after generating a new tsdx project or when any file is changed, accompanied by this behaviour is console that automatically opens with jest error. But when you yarn test test passes Screenshot 2022-12-29 at 15 29 29

    the console also opens when you run yarn build, the building works, but this console opens afterward

    Expected behavior

    A newly generated project should be without any error

    Suggested solution(s)

    I honestly have no idea

    Additional context

    Your environment

    System:
        OS: macOS 12.6
        CPU: (8) arm64 Apple M1 Pro
        Memory: 133.11 MB / 16.00 GB
        Shell: 5.8.1 - /bin/zsh
      Binaries:
        Node: 19.0.1 - ~/.nvm/versions/node/v19.0.1/bin/node
        Yarn: 1.22.19 - ~/.nvm/versions/node/v19.0.1/bin/yarn
        npm: 8.19.2 - ~/.nvm/versions/node/v19.0.1/bin/npm
      Browsers:
        Brave Browser: 106.1.44.101
        Firefox: 105.0.2
        Safari: 16.0
      npmPackages:
        tsdx: ^0.14.1 => 0.14.1 
        typescript: ^4.9.4 => 4.9.4 
      npmGlobalPackages:
        tsdx: 0.14.1
    
    opened by AjayiMike 0
  • Failed to install dependencies using `npx tsdx create mylib`

    Failed to install dependencies using `npx tsdx create mylib`

    Current Behavior

    Running npx tsdx create test with template basic

    ::::::::::: ::::::::  :::::::::  :::    :::
        :+:    :+:    :+: :+:    :+: :+:    :+:
        +:+    +:+        +:+    +:+  +:+  +:+
        +#+    +#++:++#++ +#+    +:+   +#++:+
        +#+           +#+ +#+    +#+  +#+  +#+
        #+#    #+#    #+# #+#    #+# #+#    #+#
        ###     ########  #########  ###    ###
    
    √ Choose a template · basic
    √ Created test
    × Failed to install dependencies
    Error: Command failed with exit code 1: yarn add @size-limit/preset-small-lib husky size-limit tsdx tslib typescript --dev
    (node:18896) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    (Use `node --trace-deprecation ...` to show where the warning was created)
    warning [email protected]: "test" is also the name of a node core module
    warning tsdx > [email protected]: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
    warning tsdx > [email protected]: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
    warning tsdx > rollup-plugin-sourcemaps > [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
    warning tsdx > @rollup/plugin-commonjs > magic-string > [email protected]: Please use @jridgewell/sourcemap-codec instead
    warning tsdx > jest > @jest/core > jest-haste-map > [email protected]: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
    warning tsdx > jest > @jest/core > jest-haste-map > sane > micromatch > snapdragon > [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
    warning tsdx > jest > @jest/core > jest-config > jest-environment-jsdom > jsdom > [email protected]: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
    warning tsdx > jest > @jest/core > jest-config > jest-environment-jsdom > jsdom > [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
    warning tsdx > jest > @jest/core > jest-config > jest-environment-jsdom > jsdom > [email protected]: Use your platform's native performance.now() and performance.timeOrigin.
    warning tsdx > jest > @jest/core > jest-haste-map > sane > micromatch > snapdragon > source-map-resolve > [email protected]: https://github.com/lydell/resolve-url#deprecated
    warning tsdx > jest > @jest/core > jest-haste-map > sane > micromatch > snapdragon > source-map-resolve > [email protected]: See https://github.com/lydell/source-map-url#deprecated
    warning tsdx > jest > @jest/core > jest-haste-map > sane > micromatch > snapdragon > source-map-resolve > [email protected]: Please see https://github.com/lydell/urix#deprecated
    warning tsdx > jest > @jest/core > jest-config > jest-environment-jsdom > jsdom > request > [email protected]: this library is no longer supported
    warning tsdx > jest > @jest/core > jest-config > jest-environment-jsdom > jsdom > request > [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    error Couldn't find a package.json file in "C:\\Users\\UserName\\AppData\\Local\\Yarn\\cache\\npm-@types\\estree-1.0.0-5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
    yarn add v0.19.1
    info No lockfile found.
    [1/4] Resolving packages...
    [2/4] Fetching packages...
    info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
    
        at makeError (C:\Users\UserName\AppData\Local\npm-cache\_npx\99d8f6679c19e750\node_modules\execa\lib\error.js:59:11)
        at handlePromise (C:\Users\UserName\AppData\Local\npm-cache\_npx\99d8f6679c19e750\node_modules\execa\index.js:114:26)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async C:\Users\UserName\AppData\Local\npm-cache\_npx\99d8f6679c19e750\node_modules\tsdx\dist\index.js:173:9
    

    Expected behavior

    Packages successfully install and the create process continues.

    Suggested solution(s)

    N/A

    Additional context

    The issue is specific to yarn add tsdx --dev, testing other packages individually installed correctly.

    Your environment

      System:
        OS: Windows 10 10.0.19044
        CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
        Memory: 2.22 GB / 11.88 GB
      Binaries:
        Node: 18.12.1 - D:\Programs\nodejs\node.EXE
        Yarn: yarn install v0.19.1
    [1/4] Resolving packages...
    success Already up-to-date.
    Done in 0.40s. - C:\Program Files (x86)\Yarn\bin\yarn.CMD
        npm: 9.1.2 - D:\Programs\nodejs\npm.CMD
      Browsers:
        Chrome: 108.0.5359.99
        Edge: Spartan (44.19041.1266.0), Chromium (108.0.1462.46)
        Internet Explorer: 11.0.19041.1566
      npmPackages:
        typescript: ^4.9.4 => 4.9.4
    
    opened by EpicYoshiMaster 0
  • tsdx create locks up installing react-with-storybook template

    tsdx create locks up installing react-with-storybook template

    Current Behavior

    tsdx create locks up (for as long as I was prepared to wait, 30 mins or more) when installing npm modules if you choose 'react-with-storybook' template. It works fine with 'react'.

    $ tsdx create myproject
    <ascii art>
    
    ✔ Choose a template · react-with-storybook
    ✔ Created myproject
    ⠙ Installing npm modules:
        @babel/core
        @size-limit/preset-small-lib
        @storybook/addon-essentials
        @storybook/addon-info
        @storybook/addon-links
        @storybook/addons
        @storybook/react
        @types/react
        @types/react-dom
        babel-loader
        husky
        react
        react-dom
        react-is
        size-limit
        tsdx
        tslib
        typescript
    <hangs forever>
    

    npm logs show it is caught in a loop trying to resolve a conflict between react ^17.0.2 from @storybook/addon-actions and react being 18.2.0:

    149994 warn ERESOLVE overriding peer dependency {
    149994 warn ERESOLVE   code: 'ERESOLVE',
    149994 warn ERESOLVE   edge: {
    149994 warn ERESOLVE     type: 'peer',
    149994 warn ERESOLVE     name: 'react',
    149994 warn ERESOLVE     spec: '^16.8.4 || ^17.0.0',
    149994 warn ERESOLVE     error: 'INVALID',
    149994 warn ERESOLVE     from: {
    149994 warn ERESOLVE       name: 'react-inspector',
    149994 warn ERESOLVE       version: '5.1.1',
    149994 warn ERESOLVE       location: 'node_modules/@storybook/addon-actions/node_modules/react-inspector',
    149994 warn ERESOLVE       isWorkspace: false,
    149994 warn ERESOLVE       dependents: [Array]
    149994 warn ERESOLVE     }
    149994 warn ERESOLVE   },
    149994 warn ERESOLVE   dep: {
    149994 warn ERESOLVE     name: 'react',
    149994 warn ERESOLVE     version: '17.0.2',
    149994 warn ERESOLVE     whileInstalling: {
    149994 warn ERESOLVE       name: '@storybook/addon-actions',
    149994 warn ERESOLVE       version: '6.5.13',
    149994 warn ERESOLVE       path: '/local/prc/rafiki/node_modules/@storybook/addon-actions'
    149994 warn ERESOLVE     },
    149994 warn ERESOLVE     location: 'node_modules/react',
    149994 warn ERESOLVE     isWorkspace: false,
    149994 warn ERESOLVE     dependents: [ [Object] ]
    149994 warn ERESOLVE   },
    149994 warn ERESOLVE   current: {
    149994 warn ERESOLVE     name: 'react',
    149994 warn ERESOLVE     version: '18.2.0',
    149994 warn ERESOLVE     location: 'node_modules/react',
    149994 warn ERESOLVE     isWorkspace: false,
    149994 warn ERESOLVE     dependents: [ [Object] ]
    149994 warn ERESOLVE   },
    149994 warn ERESOLVE   peerConflict: {
    149994 warn ERESOLVE     name: 'react',
    149994 warn ERESOLVE     version: '18.2.0',
    149994 warn ERESOLVE     location: 'node_modules/react',
    149994 warn ERESOLVE     isWorkspace: false,
    149994 warn ERESOLVE     dependents: [ [Object] ]
    149994 warn ERESOLVE   },
    149994 warn ERESOLVE   strictPeerDeps: false,
    149994 warn ERESOLVE   force: false,
    149994 warn ERESOLVE   isMine: false
    149994 warn ERESOLVE }
    
    

    Expected behavior

    The 'npm install' phase should complete.

    Suggested solution(s)

    Fix the version of react dependency to one compatible with StoryBook? I saw a similar issue here when React went 16->17 and StoryBook hadn't caught up.

    Additional context

    Node 19.1.0, npm 9.1.1 (also failed the same on 14.x / 8.x)

    Your environment

      System:
        OS: Linux 5.10 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
        CPU: (24) x64 AMD Ryzen 9 3900X 12-Core Processor
        Memory: 15.18 GB / 31.34 GB
        Container: Yes
        Shell: 5.1.4 - /bin/bash
      Binaries:
        Node: 19.1.0 - ~/.nvm/versions/node/v19.1.0/bin/node
        npm: 9.1.1 - ~/.nvm/versions/node/v19.1.0/bin/npm
      Browsers:
        Chrome: 107.0.5304.110
        Chromium: 107.0.5304.87
        Firefox: 102.4.0esr
      npmPackages:
        tsdx: ^0.14.1 => 0.14.1 
        typescript: ^3.9.10 => 3.9.10 
    
    opened by sandtreader 5
  • Security Vulnerability: Insufficient Granularity of Access Control in JSDom

    Security Vulnerability: Insufficient Granularity of Access Control in JSDom

    Current Behavior

    TSDX depends on Jest v27 (latest is v29) and this Jest version has a transitive dependency to jsdom v15.2.1 which has a security vulnerability (CVE-2021-20066).

    Expected behavior

    TSDX shipping without vulnerable dependencies (jsdom v16.5.0 and above).

    Suggested solution(s)

    Update Jest in tsdx.

    Additional context

    Dependency Chain:

    • tsdx#jest#jest-cli#jest-config#jest-environment-jsdom#jsdom

    Your environment

      System:
        OS: Windows 10 10.0.19043
        CPU: (8) x64 Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
        Memory: 4.08 GB / 15.79 GB
      Binaries:
        Node: 18.7.0 - C:\Program Files\nodejs\node.EXE
        Yarn: 1.22.19 - C:\dev\projects\southpolecarbon\dcs-compensate\node_modules\.bin\yarn.CMD
        npm: 8.15.0 - C:\Program Files\nodejs\npm.CMD
      Browsers:
        Edge: Spartan (44.19041.1266.0), Chromium (106.0.1370.42)
        Internet Explorer: 11.0.19041.1566
      npmPackages:
        typescript: 4.8.3 => 4.8.3
    
    opened by bennycode 0
  • tsdx build only if `src/` is ahead of `dist/`

    tsdx build only if `src/` is ahead of `dist/`

    Current Behavior

    I'm using tsdx alongside a next.js app in a monorepo (managed with yarn workspace). My folder structure is:

    packages/
      frontend/  # nextjs app
      library/   # tsdx lib used by next js (and others)
      # ... other packages
    

    Managing lib in yarn is very simple, I just added @my-workspace/library in frontend/package.json and yarn is handling the rest.

    I have a "prestart" and "prebuild" hook on my frontend package so, each time I run it, tsdx library is fully rebuilt. This is annoying cause the lib build is 10-15x slower than frontend.

    We don't want to commit the build of the lib because we think it's not a good practice (tell me if we're wrong).

    Suggested Solution

    So the ideal solution could be to add an option on tsdx build to rebuild only if src/ has changed since last built in dist/, or use incremental build.

    Who does this impact? Who is this for?

    For all ppl using tsdx in a monorepo where their lib is a required deps of other packages

    Describe alternatives you've considered

    Askl lib maintainer (hello @brozorec) to commit dist/ when they change the lib.

    Thank you ❤️

    opened by doliG 0
  • Broken Package Dependences issues

    Broken Package Dependences issues

    Current Behavior

    Couldn't find package "axe-core@^4.4.3" required by "eslint-plugin-jsx-a11y@^6.5.1" on the "npm" registry.

    opened by ChiragMewadaTR 0
Releases(v0.14.1)
  • v0.14.1(Oct 13, 2020)

    Bugfixes

    • An upstream cache bug that affected certain combinations of build formats has been fixed

      • The error that was fixed would look similar to:
        (typescript) Error: ENOENT: no such file or directory, rename '[...]/my-lib/node_modules/.cache/rollup-plugin-typescript2/rpt2_4c61ae4392b9bd24f4d43d13a3f56419b8b5805d/code/cache_' -> '[...]/my-lib/node_modules/.cache/rollup-plugin-typescript2/rpt2_4c61ae4392b9bd24f4d43d13a3f56419b8b5805d/code/cache'
        
    • The built-in lodash -> lodash-es replacement no longer breaks imports of lodash/fp

    Dependencies

    • The warning about incompatible peerDeps from eslint-config-react-app has been resolved

    Commits

    Lists of commits:

    Bugfixes

    • fix/deps: upgrade rpts2 to fix cache issue (#896) eaa1c3b
    • fix: don't replace lodash/fp imports with lodash-es/fp (#884) 8b91c74

    Dependencies

    • Use compatible eslint-config-react-app and eslint-plugin-react-hooks. (#890) 57f7dcc

    GitHub

    • Create CODE_OF_CONDUCT.md (#899) e3e80d6

    Internal

    • test: add a smoke test that builds all formats (#896) e2f1b76
    • test: ensure lodash-es replacement is done properly (#884) 9c4ce68

    All Contributors

    • docs: add tanem as a contributor (#902) 81c8b2d
    • docs: add altrim as a contributor (#895) d292dd9
    • docs: add ludofischer as a contributor (#894) da53ea8

    Commit Range

    https://github.com/formium/tsdx/compare/v0.14.0...v0.14.1

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Sep 21, 2020)

    BREAKING CHANGES

    Slightly Breaking Changes

    Node 10+

    Updated the required Node version from 8 to 10.

    While previous versions of TSDX began deprecating support for Node 8, it was not officially dropped. In this release, we have officially dropped Node 8: TSDX now requires Node 10+ as many dependencies that were upgraded similarly do.

    This should not impact most users as Node 8 has been EoL for ~9 months now. Many packages had already required Node 10+ and the vast majority already have support for it. Most users are on Node 12 or Node 14 already.

    Jest 25

    Updated the Jest version used by tsdx test from 24 to 25.

    The main breaking change in Jest 25 is the upgrade of the default JSDOM environment from JSDOM v11 to JSDOM v15. For most Jest users, this change either has no impact or will reduce configuration if you've manually set a more up-to-date jest-environment-jsdom in your jest.config.js. In some rare cases, where code relied on the old version of JSDOM, this may result in breakage.

    ts-jest and jest-plugin-typeahead have also been upgraded to support Jest 25.

    Babel Changes

    babel-plugin-transform-async-to-promises -> babel-plugin-polyfill-regenerator

    async-to-promises has been unmaintained for around a year now and has several correctness issues, many of which have affected TSDX users. For that reason, we've switched to using babel-plugin-polyfill-regenerator instead, which will add a pure, non-polluting regenerator-runtime polyfill if your targets require it.

    The vast majority of browsers (94.37%) now support async/await and generators with no polyfilling necessary, but the default preset-env will add it. If you don't already have one, we recommend adding a .browserslistrc (or preset-env targets) to specify the environments you're targeting.

    This should be totally backward-compatible, but it may change the output quite a bit, including making bundles larger due to inclusion of regenerator-runtime.

    babel-plugin-macros

    TSDX's internal Babel plugin ordering has changed, moving babel-plugin-macros to be first. This was done in order to support several use-cases like styled-components/macro, which previously did not work due to the ordering.

    This shouldn't really break anything, but there is an off chance it might have an impact on some rare builds.

    Improvements

    • Jest 25 / JSDOM 15 usage per above
    • Due to the babel-plugin-polyfill-regenerator change above, TSDX now supports polyfilling generators out-of-the-box. Previously we only supported async/await with babel-plugin-transform-async-to-promises and required users to configure their own plugins for generator polyfilling
    • styled-components/macro support per above
    • A --max-warnings flag has been added to tsdx lint, which works the same as ESLint's --max-warnings flag

    Template Improvements

    • Storybook template has been updated to Storybook v6, which significantly simplifies the config and adds some features
    • Storybook template has now been configured to type-check during Storybook builds
    • size-limit has been added to all templates for bundle analysis via NPM/Yarn scripts and a GitHub Action
    • All templates' GitHub Actions now have matrix testing for different Node versions and OSes out-of-the-box
    • All templates' GitHub Actions now have simplified config and improved caching using bahmutov/npm-install
    • All templates' tsconfig.json now set skipLibCheck, forceConsistentCasingInFileNames, and noEmit
      • The former two are now recommended by TS and the latter one is just a usability improvement for those who use tsc for type-checking. skipLibCheck will also greatly increase performance of tsc's type-checking
    • All templates' tsconfig.json now have detailed comments explaining nearly every configuration option in use

    Docs

    • patch-package is now officially listed as a customization option

    Dependencies

    • Jest 25 and Node 10+ per above. Most deps were updated by a major or two.
    • @babel/preset-env was updated to the latest minor to support nullish coalescing and optional chaining without additional plugins, as well as to update the compatibility table.
      • If you have snapshots that rely on specific output from preset-env or Autoprefixer, as TSDX's internal test suite does, you may need to update those snapshots.
    • All vulnerabilities and deprecation warnings should now be resolved
    • Due to some upgrades, clean-up, and use of yarn-deduplicate, overall install size should have decreased a good bit

    Commits

    Lists of commits:

    Improvements

    • Add --max-warnings flag to tsdx lint (#858) dd92fec

    Bugfixes

    • change: replace useBuiltIns with polyfill-regenerator (#795) 6e405d5
    • change: replace async-to-promises with regenerator (#795) 2aefc3d
    • (fix): change plugin order to make styled-components/macro work (#644) 6d7257c

    Template Improvements

    • feat: type-check stories during Storybook build (#876) f1ddccb
    • feat: add test matrix to all templates' CI (#882) 8449699
    • fix: use @bahmutov/npm-install in templates' CI (#882) f109fe9
    • Remove redundant CI=true from templates' github workflows (#870) 6ba173f
    • docs: add comment that noUnused* overlaps with an ESLint rule (#864) e50bc51
    • docs: add comments for nearly all tsconfig options in use (#864) 10a6137
    • feat: add noEmit to templates' tsconfigs (#864) c802b8b
    • feat: add skipLibCheck and forceConsistentCasingInFileNames (#864) e0f79fe
    • feat: add size-limit bundle size analysis tool to templates (#705) 2938ed9
    • update react-with-storybook template for Storybook v6 (#805) 51e47a7

    Docs

    • docs: remove reference to Node 10+ req for create (#881) a95d2d8
    • multi-entry: temporarily change docs to singular "module" (#862) ac98a73
    • docs: capitalize 'S' in TypeScript (#752) da4b189
    • docs: add patch-package reference to Customization section (#855) 08a8ef8
    • docs: update features and comparison with changes from past year (#847) 1619bc1
    • docs/fix: missing "to" infinitive marker (#843) 49fb303

    Dependencies

    • deps: upgrade several more deps' majors (#879) a9434f9
    • deps: update extractErrors plugin's evalToString file (#878) 0e45050
    • deps: update extractErrors Babel plugins to Babel 7 (#878) 33a6bde
    • license: add FB License header to all extractErrors code (#878) 2caad24
    • Migrate from rollup-plugin-babel to @rollup/plugin-babel (#789) f592595
    • fix/deps: dependabot YAML doesn't support anchors/aliases (#850) f8b8317
    • env/deps: remove greenkeeper.json, configure dependabot.yml (#846) 45aea66
    • deps: upgrade Babel preset-env, remove now redundant plugins (#838) 8e2d750
    • clean/deps: remove unused Babel plugins: transform-runtime, dynamic-import (#837) 485e04b
    • deps: apply yarn-deduplicate and add deduplicate script (#683) d053912
    • security/deps: audit fix several deps' vulnerabilities (#824) 4966edd
    • (deps): upgrade to Jest 25 (#679) 116a043
    • (deps): upgrade several deps' majors; require Node 10+ (#678) e018210

    GitHub

    • github: use envinfo for getting versions in issue reports (#820) 349f299

    Internal

    • ci: make internal job names more consistent w/ templates' (#882) 49a3521
    • ci: update matrix to use Node 14 instead of Node 13 (#880) dac1fd7
    • clean: bad whitespace and Flow types in extractErrors (#878) 2d0f279
    • test: compatible targets shouldn't insert regeneratorRuntime (#795) 794e5ad
    • test: add an async syntax regression test (#795) 814c83b
    • refactor/test: move generator test to build-default (#795) 2f8544d
    • ci: add deduplicate:check script and run on precommit and CI (#683) 22133ce
    • deps: update np to fix MFA bug during publishes (#816) fff9a43

    All Contributors

    • docs: add felixmosh as a contributor (#883) 427e5ad
    • docs: add vladdy-moses as a contributor (#877) 7edf7ea
    • docs: add in19farkt as a contributor (#875) ade9483
    • docs: add CyriacBr as a contributor (#874) 0032086
    • docs: add seungdols as a contributor (#873) ae15bd3
    • docs: add hb-seb as a contributor (#872) 33c8317
    • docs: add KATT as a contributor (#868) f6c296a
    • docs: add thany as a contributor (#867) d996a0e
    • docs: add orta as a contributor (#866) 198c16f
    • docs: add slikts as a contributor (#865) 42f56a0
    • docs: add georgevarghese185 as a contributor (#863) 22a0b7b
    • docs: add strdr4605 as a contributor (#860) d4c3bb2
    • docs: add kyarik as a contributor (#845) 826cd07
    • docs: add andresz1 as a contributor (#842) aaa3dce
    • docs: add Bnaya as a contributor (#836) dbdaba1
    • docs: add kylemh as a contributor (#835) d5bbcf7
    • docs: add HipsterBrown as a contributor (#834) 199841d

    Commit Range

    https://github.com/formium/tsdx/compare/v0.13.3...v0.14.0


    Postscript

    Apologies again for the delay on getting to v0.14.0, COVID added a lot of stress and work had been busy, to say the least. Unfortunately I wasn't able to get to all the changes I wanted to into it, but v0.14.0 has been waiting long enough. Only two complex issues were left out and many more PRs added in, though not everything had made it into v0.13.x either.

    I also wanted to push Rollup 2, TS 4.0, Prettier 2, and ESLint upgrades into this, but the breaking changes in the changelog started getting too big, so I decided to wait a bit to split those changes across more releases to not throw too much breakage at users at once.

    If you're wondering, all of my co-workers, my team, and I were suddenly laid off just over a week ago, so that's why I had time (and want to distract myself) to push out ~2 dozen PRs the past week 😕

    Best wishes and stay safe to everyone!

    Source code(tar.gz)
    Source code(zip)
  • v0.13.3(Aug 23, 2020)

    Optimizations

    • Types are only checked once now, type declarations are only emitted once now, and cache is shared with all formats
      • Previously it was once per each format
      • This was a roughly 15-30% perf boost altogether on the TSDX test suite, but YMMV

    Template Bugfixes

    • Templates no longer have baseUrl or paths set in their tsconfig, fixing a long-standing bug

    Template Docs

    • Template READMEs have been significantly improved, adding consistency between all 3, fixing outdated portions, and better describing certain behaviors

    Commits

    Lists of commits:

    Optimizations

    • optim: only check types once (#758) 79dddc4
    • (optim): no need for separate cacheRoot per format (#691) 3357cbf
    • (optim/fix): only emit type declarations once (#691) 6929300

    Template Improvements

    • deps: upgrade actions/cache to v2 in all templates (#750) 984e024

    Template Bugfixes

    • (fix): templates should not have baseUrl or paths set (#707) 17ffcd2

    Template Docs

    • (docs): basic template README should be like React ones (#706) e7128f8
    • (docs): add GitHub Actions info to template CI READMEs (#706) effdc31
    • (docs): remove duplicative "Using the Playground" section (#706) f360f9b
    • (docs): improve consistency in template READMEs (#706) 356bbda
    • (docs): remove version/permalink refs in template READMEs (#706) 76a0530
    • (docs): update outdated Jest info in template READMEs (#706) d4ff914

    Docs

    • lint: manually fix new website ESLint errors and warnings (#794) 9fea19d
    • format: auto-fix new website formatting errors (#794) 3dfdafb
    • format: auto-fix help dialog formatting error (#794) 99d982a
    • Update features.js f0963cb
    • Fix edit link e85b9ab
    • Remove unused image 4f6bdb4
    • Remove docusaurus site 1b3452b
    • Put up redirect at old docs site 5f49acd
    • New docs site! (#765) b09e195
    • Update help channels to point to formium org (#762) 25a39cc
    • fix/help: test command no longer runs Jest in watch mode (#734) 8b148ce
    • (fix): update messages.ts github links (#754) b91ab47
    • (docs): Comparison to -> with (#737) edcb9e7
    • (docs): add Jest and ESLint subsections to Customization (#697) 4e4df28
    • [docs] add homepage to package.json (#682) 35f162a

    GitHub

    • github: disable blank issues without an issue template (#814) 0139cae

    Internal

    • greenkeeper: remove website from greenkeeper config (#815) fc22471
    • (clean): remove redundant tsconfig strict opts in tests (#690) 5c73483
    • Simplify getInputs function (#745) 14bfa39

    All Contributors

    • docs: add devrelm as a contributor (#777) 5e5c3f8
    • docs: add jssee as a contributor (#776) 1225a92
    • docs: add yuriy636 as a contributor (#775) 267e488
    • docs: add dandv as a contributor (#774) b344c9e
    • docs: add bmihelac as a contributor (#773) 32126c3
    • docs: add Semperia as a contributor (#772) f1335f1
    • docs: update org for all-contributors (#772) 12971e5

    Commit Range

    https://github.com/formium/tsdx/compare/v0.13.2...v0.13.3


    Postscript

    Apologies for the delay on releasing this and the delay on getting to v0.14.0, COVID added a lot of stress and work has been busy, to say the least. I'm behind on all of my OSS repos, TSDX is actually the most maintained (but needs a lot more attention) 😕 v0.14.0 will be the next release, which will be a breaking change mostly due to updating dependencies' majors. I held back on it to get more into v0.13.x before getting busy, but unfortunately I wasn't able to get to all the changes I wanted to into it, but v0.14.0 has been waiting long enough

    Wishing everyone well! Please stay safe and please do your part to follow public health guidelines!

    ✊ Quoting from a Chromium release ✊ :

    Black Lives Matter. Saying this does not mean that other lives do not matter. It should not be controversial to say this. If I say Chromium updates matter, it does not mean that other Fedora packages do not matter, it means that a Chromium update is needed to fix this giant pile of severe security vulnerabilities, here, today, now: [...]

    In making that analogy, I do not intend to trivialize BLM. In no way do I mean to compare the lives of people to a silly web browser update. People are infinitely important than software. But since I'm here to push this software update out, I am also choosing to say clearly and unambiguously that Black Lives Matter.

    Open Source proves that many voices, many contributions, together can change the world. It depends on it. This is my voice.

    Source code(tar.gz)
    Source code(zip)
  • v0.13.2(Apr 13, 2020)

    Bugfixes

    • @types/jest was moved to be a dependency instead of a devDependency. It has also been removed from the templates.
      • This should fix any version mismatch issues that were occuring, like using @types/jest v25 but Jest v24.
        • Stay tuned for an upgrade to Jest v25 in the next minor release of TSDX
    • semver was also moved from devDependency to dependency. It's used in tsdx create, so it was misplaced.

    Template Improvements

    • Several redundant tsconfig compilerOptions have been removed. strict already includes all of these.

    Commits:

    Lists of commits:

    Bugfixes

    • (fix/deps): semver should be a dep, not a devDep (#677) 094fe5e
    • (fix): @types/jest should be a dep, not a devDep (#672) 2930943

    Template Improvements

    • (clean): remove redundant tsconfig strict opts in templates (#673) 2dd4396

    Internal

    • (docs/types): add comments to some remaining declarations (#675) 72092c8
    • (deps/types/clean): remove extraneous typings (#675) c9a719a
    • (deps/clean): remove unused @types/ms devDep (#674) eaa5da7
    • (clean): remove redundant set of watch opts (#671) 351936e

    All Contributors

    • docs: add kotarella1110 as a contributor (#680) 51cd32f
    • docs: add rockmandash as a contributor (#676) 92747f8
    • docs: add ambroseus as a contributor (#670) 72c06b9

    Commit Range

    https://github.com/jaredpalmer/tsdx/compare/v0.13.1...v0.13.2


    Postscript

    Wishing everyone well during the pandemic! Please stay safe and please do your part to follow public health guidelines!

    If you're looking for more ways to help out, there are many, many around and likely local initiatives where you live. I also included a small few I stumbled upon in the previous release postscript. Another recent relevant one might be the shortage of COBOL programmers in the US. If you're a tech worker interested in helping out NJ (whether you know COBOL or not), there's a sign-up form here.

    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Mar 29, 2020)

    Template Bugfix

    • tsconfig.json include was changed to remove test from the array. This faulty include resulted in declarations being generated in dist/ for test files as well as slowing down builds. It was also the cause of TS errors around v0.13.0's change to rootDir: './src'

    Tests

    • Testing has been significantly improved in the commits leading up to this release, including:
      • creating an integration test set-up
      • creating many integration tests
      • migrating the tests to TypeScript (they were previously 99% JS)

    Commits:

    Lists of commits:

    Template Bugfix

    • (fix): remove faulty tsconfig.json include of test dir (#646) aa09dcb

    Internal

    • (format): format all files, not just src/ and test/ (#648) 3cb3841
    • (refactor): make preset-env variable naming more explicit (#643) 477a6dd
    • (clean): remove unused test/utils/psKill and its deps (#627) 9f559fa
    • (clean): remove some unnecessary internal declarations (#637) 985a97b
    • (clean): remove all references to --define (#636) 6e34b20

    Tests

    • (refactor): migrate all tests and test helper code to TS (#649) 863c56d
    • (docs/fix): remove erroneous Test README sub-header 9fde343
    • (test): ensure Babel presets are merged and applied (#627) ee391e4
    • (fix/test): wrap shell.grep bc it shouldn't always succeed (#627) 25587a5
    • (test): ensure a regenatorRuntime import is added (#627) fc4e23e
    • (test): ensure styled-components works with TSDX (#627) 9569d0c
    • (refactor): move safePackageName test to a unit test dir (#627) 9d72222
    • (refactor): move lint -> fixtures/lint, and the test out (#627) 944ab02
    • (refactor): rename tests -> e2e, integration-tests -> integration (#627) 70c8c68
    • (test): ensure tsdx.config.js w/ rollup-plugin-postcss works (#627) 1e690b5
    • (test): ensure --extractErrors kind of works (#627) 7617726
    • (refactor): move manual tests into integration test dir (#627) a43da8d
    • (fix/test): resolve reproducibility issues w/ execWithCache (#621) d234dff
    • (refactor): split build tests into separate files per fixture (#621) 05e5b64

    All Contributors

    • docs: add lookfirst as a contributor (#651) 7364efe

    Commit Range

    https://github.com/jaredpalmer/tsdx/compare/v0.13.0...v0.13.1


    Postscript

    Wishing everyone well during the pandemic! Please stay safe and follow the guidelines of public health officials, for yourself, for your family, and for everyone else and their families!

    There's also lots of ways to help out, here's just a few I've stumbled upon:

    • https://foldingathome.org/
    • https://stackoverflow.blog/2020/03/26/ways-to-help-the-fight-against-covid-19-from-home/
    • http://hackathon.gogcrc.org/
    • #BuildforCOVID19
    • https://covid19responsefund.org/
    • https://www.gofundme.com/c/act/covid19
    • https://github.com/jcl5m1/ventilator, https://github.com/jcl5m1/ventilator/issues/17
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Mar 20, 2020)

    Deprecations

    • tsconfig.json rootDir has been changed to ./src. ./ is now deprecated and will give a warning

    Improvements

    • Async Rollup Plugins for tsdx.config.js are now supported out-of-the-box (no more need for hacks like objectHashIgnoreUnknownHack)
    • Jest's --config flag is now respected
    • tsconfig.json's declarationDir is now respected
    • Much better support of JS & JSX files in build, test, and lint. This should enhance the gradual migration experience quite a bit
    • Co-located test files are ignored during build by default now (so unnecessary declarations aren't generated for them)

    Bugfixes

    • Babel presets should no longer be ignored and will be merged with TSDX's defaults
    • Multiple JSX -> JSX imports should resolve correctly now
    • src/index.jsx will now be parsed as an entry file (previously only .ts, .tsx, and .js were)
    • esModuleInterop should be properly read now for the purposes of configuring Rollup's esModule / CJS __esModule -- a bug made it so these were always added previously. This does not impact parsing of esModuleInterop for anything else, which worked correctly and still does.
    • Jest transform regexes are now properly anchored, non-TS/TSX files shouldn't be passed to ts-jest anymore
    • Jest config parsing now errors loudly instead of silently during failures
    • Async Rollup Plugins in tsdx.config.js don't bug out anymore

    Templates

    • Storybook template has been significantly upgraded and patched
    • GH Actions have been added to all templates
    • tsconfig.json rootDir has been changed to ./src. ./ is now deprecated and will give a warning
    • Confusing tsconfig.json target has been removed as it is not currently configurable (configured with @babel/preset-env instead)
    • src is now included in package.json files to improve debugging
    • Node version requirement is enforced when creating templates

    Commits:

    Lists of commits:

    Features

    • (feat): support custom jest config paths via --config (#526) 16459df
    • (feat): use tsconfig declarationDir is set (#468) b23f158
    • (feat): support JS & JSX files in tsdx test (#486) 424fc25
    • (feat): support JS & JSX files in tsdx lint (#487) 655bb53
    • Ensure co-located test files don't have definitions generated (#472) a56894f

    Bugfixes

    • Add JSX extension to @rollup/plugin-node-resolve options (#524) 735f301
    • (fix): correctly read tsconfig esModuleInterop (#555) c12f92c
    • (fix): parse tsconfig extends, trailing commas, and comments (#489) ad33c01
    • (fix): if custom jest config path, use its dir as rootDir (#526) f19fa61
    • (fix/types): fix internal & external declaration errors (#542) d164dd2
    • (deps/fix/types): upgrade rollup & fix event type issues (#544) edd8045
    • (fix): watch examples should only show watch command (#537) e2a91ad
    • anchor regexps for jest transforms (#513) 1b1b9f8
    • fix: respect custom tsconfig path for esModuleInterop (#436) 4ec56fc
    • (fix): upgrade rpts2 / object-hash to support async rollup plugins (#506) b17a0be
    • (fix): jest config parsing shouldn't silently fail on error (#499) a97a5af
    • (fix): check for JSX extension for entry files (#474) 67a07bd
    • (fix): ensure Babel presets are merged (#473) 40ba936

    Templates

    • Add 'src' to package.json files to improve source maps (#620) 287dc44
    • (remove): redundant/confusing tsconfig target in templates (#466) 670cc56
    • (fix): set rootDir to './src', not './'. deprecate moveTypes (#504) 68f26c9
    • Add GH Action configs for each template (#457) 21893b8
    • (fix) Enforce Node version for tsdx create, update documentation to express requirement. (#433) 9f183e7
    • Integrate new Storybook config (#435) 1d8f123

    Docs

    • (fix/docs): test script doesn't run Jest in interactive mode (#536) a2e4b78
    • (docs/fix): remove outdated language about custom Babel configs (#467) 1269115

    Dependencies

    • Bump acorn from 5.7.3 to 5.7.4 (#580) 3462576
    • (deps): remove unused cross-env, cross-spawn, chokidar-cli (#553) ab73e25
    • (refactor): replace rimraf, mkdirp, util.promisify with fs-extra funcs (#501) 3a6d42f
    • Update husky to the latest version 🚀 (#507) 6a0a2c5
    • Update cross-env to the latest version 🚀 (#459) 4f6de10
    • Update @rollup/plugin-node-resolve to the latest version 🚀 (#477) 1a7d816
    • Revert "chore(package): update @types/jest to version 25.1.0 (#462)" (#470) f12fcdf
    • chore(package): update @types/jest to version 25.1.0 (#462) 95ff6da
    • Update @types/semver to the latest version 🚀 (#463) 23c8826

    Internal

    • (ci/optim): add caching for yarn install (#625) 18e3c05
    • Add publish npm script (#582) 77e7c70
    • (clean): remove unused fixture test directories (#626) 82e764f
    • (ci): remove experimental --runInBand as tests pass now (#624) 0f72117
    • (optim/ci): don't build a second time for lint or test (#623) 6679c23
    • (refactor): use outputFile instead of mkdirs + writeFile (#617) b21d7af
    • (test): ensure custom --tsconfig path is correctly read (#556) 3530265
    • (types): improve typings for Jest config (#526) 9fef652
    • (test): dogfood tsdx test for internal testing (#526) fec415e
    • (test): always run build before running tests (#493) df22fe3
    • (types): add @types/sade, fix transpileOnly default (#476) b3632fe
    • (types): enforce stricter typings (#475) 4e5e48a

    All Contributors

    Expand very long list. All historical contributors were added during this release.
    • docs: add justingrant as a contributor (#622) 3a6e098
    • docs: add github as a contributor (#616) d4dd010
    • docs: add dependabot[bot] as a contributor (#615) 6b9f205
    • docs: add allcontributors[bot] as a contributor (#614) e0e1a79
    • docs: add greenkeeper[bot] as a contributor (#613) 60cc280
    • docs: add Carl-Foster as a contributor (#611) 8b2fb0c
    • docs: add lpolito as a contributor (#610) 1611158
    • docs: add lookfirst as a contributor (#609) 3558e7b
    • docs: add goznauk as a contributor (#608) 32ca779
    • docs: add joeflateau as a contributor (#607) 7e4601d
    • docs: add arthurdenner as a contributor (#606) 0930aeb
    • docs: add techieshark as a contributor (#605) 8ed4547
    • docs: add ArnaudBarre as a contributor (#604) 35eb230
    • docs: add ncphillips as a contributor (#603) 1118a53
    • docs: add yordis as a contributor (#602) 8bba957
    • docs: add audiolion as a contributor (#601) 272547e
    • docs: add Aidurber as a contributor (#600) 43e4e2f
    • docs: add mfolnovic as a contributor (#599) de3c565
    • docs: add third774 as a contributor (#598) 109355f
    • docs: add elado as a contributor (#597) efbcfe2
    • docs: add wessberg as a contributor (#596) 9702550
    • docs: add tunnckoCore as a contributor (#595) f1e06c2
    • docs: add medelman17 as a contributor (#594) dc871c1
    • docs: add netzwerg as a contributor (#593) 570ed7a
    • docs: add albizures as a contributor (#592) 47a566e
    • docs: add sadsa as a contributor (#591) 1ad4787
    • docs: add ccarse as a contributor (#590) 9a11b10
    • docs: add bbugh as a contributor (#589) c256093
    • docs: add wrdls as a contributor (#588) 2277e8a
    • docs: add honzabrecka as a contributor (#587) 4495dde
    • docs: add leonardodino as a contributor (#586) dc43151
    • docs: add jooohn as a contributor (#585) 72904ca
    • docs: add johnrjj as a contributor (#584) 17ef158
    • docs: add karlhorky as a contributor (#576) 1fe8d51
    • docs: add dance2die as a contributor (#575) 254783a
    • docs: add hyanmandian as a contributor (#574) e0ad9cd
    • docs: add quentin-sommer as a contributor (#573) 3a270f5
    • docs: add FredyC as a contributor (#570) ac1fd87
    • docs: add TrySound as a contributor (#571) ac2e80f
    • docs: add enesTufekci as a contributor (#569) 544cf4e
    • docs: add aleclarson as a contributor (#568) ab213f7
    • docs: add kirjai as a contributor (#566) dabc620
    • docs: add slorber as a contributor (#563) 78073f7
    • docs: add a-type as a contributor (#562) 518ef10
    • docs: add jakegavin as a contributor (#561) 345f850
    • docs: add PabloSzx as a contributor (#560) 53713aa
    • docs: add hedgerh as a contributor (#564) c878caf
    • docs: add bastibuck as a contributor (#559) e72ec4e
    • docs: add diegohaz as a contributor (#558) d84756a
    • docs: add natemoo-re as a contributor (#567) 7c1d677
    • docs: add skvale as a contributor (#565) 68d5601
    • docs: add n3tr as a contributor (#557) 216bb56
    • docs: add justingrant as a contributor (#554) 7102819
    • docs: add aleclarson as a contributor (#552) 0419262
    • docs: add gndelia as a contributor (#550) 10e54d5
    • docs: add fknop as a contributor (#549) f4783d6
    • docs: add etienne-dldc as a contributor (#548) d4e12ee
    • docs: add agilgur5 as a contributor (#520) 4f1e1ef
    • docs: add kyle-johnson as a contributor (#519) 97480cc
    • docs: add tricoder42 as a contributor (#518) a929772
    • docs: add selbekk as a contributor (#485) a31ee26
    • docs: add sisp as a contributor (#482) 1b9092b
    • docs: add agilgur5 as a contributor (#480) b71431b
    • docs: add SKalt as a contributor (#454) 93c4be6
    • docs: add hedgerh as a contributor (#449) ba1d276
    • docs: add arthurdenner as a contributor (#453) 70dd8e5
    • docs: add Carl-Foster as a contributor (#452) d819596
    • docs: add LoicMahieu as a contributor (#451) d9eb226
    • docs: add sebald as a contributor (#450) 3932958
    • docs: add karlhorky as a contributor (#448) 4f2ba6f
    • docs: add jamesgeorge007 as a contributor (#447) 317b673
    • docs: add agilgur5 as a contributor (#446) 77c28d0
    • docs: add kylemh as a contributor (#445) 7bb50a4
    • docs: add lpolito as a contributor (#444) 651be2f

    Commit Range

    https://github.com/jaredpalmer/tsdx/compare/v0.12.3...v0.13.0


    Postscript

    Sorry for the long delay on this release everyone, I was recently added as an official maintainer (a week ago) and just given publishing privileges (yesterday). See https://github.com/jaredpalmer/tsdx/issues/512 for more details.

    Wishing everyone well during the pandemic!

    Source code(tar.gz)
    Source code(zip)
  • v0.12.3(Jan 13, 2020)

    Patch

    • tsdx test no longer defaults to watch mode in interactive environments. This reverts previous behavior which caused bugs.

    Commits

    • Run tests in series with --runInBand (#429) 367a7a5
    • Deprecate Node 8 support (#426) bd35f65
    • Revert "default jest watch unless in CI" PR #366 (#421) 95ac3f4
    • Drop Node 8 from test matrix f1cf8b1

    https://github.com/jaredpalmer/tsdx/compare/v0.12.2...v0.12.3

    Source code(tar.gz)
    Source code(zip)
  • v0.12.2(Jan 13, 2020)

    Patch

    • Fix issue with TS compilation. Please upgrade to 12.2, as builds are inconsistent.

    Commits

    • (docs): add contributing guidelines (#417) e5747fd
    • Fix onFailure example (#416) 9e8ab92
    • (fix): revert #130's breaking change of tsconfig options (#415) 00f80ac
    • (refactor): replace ensureDistFolder with fs.outputFile (#406) ea124bc
    • upgraded rollup-plugin-'s to @rollup/plugin-'s. (#411) cfc1e76
    • (docs): add warning to tsdx.config.js usage (#400) 35fa947
    • (types/refactor): be more specific than 'any' in build code (#401) 158ee9a
    • (refactor): use path constants instead of custom resolveApp (#402) a38041f
    • (docs): run doctoc on pre-commit (#399) f338613

    https://github.com/jaredpalmer/tsdx/compare/v0.12.1...v0.12.2

    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Dec 29, 2019)

    Improvements

    • Add success/failure flags
    • Add transpileOnly flag
    Description
      Rebuilds on any change
    
    Usage
      $ tsdx watch [options]
    
    Options
      -i, --entry           Entry module(s)
      --target              Specify your target environment  (default web)
      --name                Specify name exposed in UMD builds
      --format              Specify module format(s)  (default cjs,esm)
      --tsconfig            Specify your custom tsconfig path (default <root-folder>/tsconfig.json)
      --verbose             Keep outdated console output in watch mode instead of clearing the screen
    +  --onFirstSuccess      Run a command on the first successful build
    +  --onSuccess           Run a command on a successful build
    +  --onFailure           Run a command on a failed build
      --noClean             Don't clean the dist folder
    +  --transpileOnly       Skip type checking
      -h, --help            Displays this message
    
    Examples
      $ tsdx watch --entry src/foo.tsx
      $ tsdx watch --target node
      $ tsdx watch --name Foo
      $ tsdx watch --format cjs,esm,umd
      $ tsdx watch --tsconfig ./tsconfig.foo.json
      $ tsdx watch --noClean
    +  $ tsdx watch --onFirstSuccess "echo The first successful build!"
    +  $ tsdx watch --onSuccess "echo Successful build!"
    +  $ tsdx watch --onFailure "The build failed!"
    +  $ tsdx watch --transpileOnly
    

    Bugfixes

    • Fixed jest watch mode

    Commits

    • (refactor): invert if in run function (#404) e1370de
    • (optim/test): use node testEnvironment (#405) ec0f285
    • (clean): remove --env=jsdom as JSDOM is Jest's default (#396) 7c79b74
    • (format): alphabetize package.json deps (#398) 27ba1dd
    • (docs/fix): fix ToC changes / bugs introduced in #307 (#397) 387f3c2
    • (docs): improve test watch mode docs (#395) 531010e
    • Update @types/node to the latest version 🚀 (#391) be3c410
    • [docs] howto turn off watch mode (#385) efb3539
    • feat: Add success/failure hooks to watch (#130) ab54278
    • (types/fix): explicit Rollup typing, fix treeshake location (#371) 2a5e5a5
    • feat: Add transpileOnly flag to watch and build command (#307) ee4b307

    https://github.com/jaredpalmer/tsdx/compare/v0.12.0...v0.12.1

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Dec 19, 2019)

    Improvements

    • Added Storybook template
    • Upgraded to Ts 3.7.x
    • Updated rollup deps / plugins
    • Moved the cache root to be inside of node_modules, you can delete the .rts2_cache_xxx folders from root and remove them from your .gitignore files
    • (internals) Made internal methods async where possible, should result in a minor speed boost.
    • Added optional chaining and nullish coalescing operators support
    • When running in an interactive shell (i.e. if process.env.CI false), tsdx test now runs Jest in watch mode. Note: Most CI services set CI env variable to true by default. Our implementation is exactly how create-react-app does it.
    • tsdx test will pass in cases where no tests exist
    • Added "prepare" task to package.json scripts so that you can publish immediately. For those interested, I like to publish (TSDX) packages with np to do this.

    Bugfixes

    • Fix error when providing babel/preset-env without options
    • Got rid of eslint warning upon install
    • (Internal) Tests now run on PRs
    • Do not output warning about react on non-react projects

    Roadmap

    • Add Closure Compiler
    • Better support for "preshaking" and top level exports
    • Monorepo support. Note: Formik is now using lerna and TSDX, so we'll be using it as a playground

    Commits

    • (deps/lint): upgrade @typescript-eslint to support ?. and ?? (#377) 843c676
    • (ci): add a lint job so PRs will require passing lint (#378) 930feb9
    • (clean): remove .rts_cache_* from storybook gitignore (#375) c5df5ac
    • Add optional chaining and nullish coalescing operators support (#370) a736c77
    • Added Storybook template (#318) c487377
    • Merge pull request #373 from agilgur5/fix-pr-ci 7c8481b
    • (fix/ci): GitHub Actions should run on PRs as well 5da9f65
    • Merge pull request #372 from agilgur5/fix-format b8f24e2
    • (fix/format): formatting of #366 didn't pass lint f3399e0
    • Add prepare script to generated project (#334) ef93d1d
    • default jest to watch mode when not in CI (#366) 5ee9dfc
    • (fix): respect tsconfig esModuleInterop flag (#327) e8be03c
    • Merge pull request #368 from jamesgeorge007/hotfix/typo-fix 78cccfe
    • fix: minor typo aa8ab42
    • update rollup deps and plugins (#364) d621994
    • update rollup deps and plugins eb35feb
    • update to ts 3.7 (#363) cab5591
    • update to ts 3.7 5e84911
    • Remove unnecessary yarn install command in GH action (#361) c44bd41
    • Remove unnecessary yarn install command in GH action 3148138
    • Replaced some sync methods for their async version (#291) c5f65bc
    • Merge pull request #360 from goznauk/master 5aa5eda
    • update README.md dfdd364
    • update README.md 085916c
    • Use node_modules/.cache/... as cacheRoot (#329) 55c0d47
    • fix(lint): Only default to src test if they exist (#344) 3261dea
    • Fix error when providing babel/preset-env without options (#350) a1a0dcb
    • Replaced some sync methods for their async version 4deb7e2
    • fix(lint): do not output warning about react on non-react projec… (#308) 6252b70
    • chore(lint): use detect setting for eslint-plugin-react in react projects b6c3153
    • fix(eslint): do not output warning about react on non-react projects 830e413
    • Merge pull request #303 from jaredpalmer/greenkeeper/rollup-plugin-typescript2-0.25.2 ffd8733
    • chore(package): update lockfile yarn.lock ed6f490
    • fix(package): update rollup-plugin-typescript2 to version 0.25.2 62f0241
    • feat(utils): add util that gets the React version of a project, if exists cf6718c
    • Tweak docs f1a2643
    • Update execa to the latest version 🚀 (#266) 6225b8e
    • Merge branch 'master' into greenkeeper/execa-3.2.0 c9f04c3
    • Merge pull request #195 from sadsa/patch-1 acd7e54
    • Update eslint-plugin-react-hooks to the latest version 🚀 (#281) 72154fa
    • chore(package): update lockfile yarn.lock 1186b7d
    • fix(package): update eslint-plugin-react-hooks to version 2.2.0 28f16c2
    • chore(package): update lockfile yarn.lock 1cd2fb3
    • fix(package): update execa to version 3.2.0 d6b5ef3
    • Pass tests in cases where no tests exist 61a3177

    https://github.com/jaredpalmer/tsdx/compare/v0.11.0...v0.12.0

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Oct 29, 2019)

    Bugfixes

    • Rollback to rollup-plugin-typescript2. TSDX now generates types properly--again. SORRY about that folks.

    Improvements

    • Added support for eslint report: new flag --report-file
    • Added --noClean option for watch

    Commits

    • Update to @types/react 16.9.11 (#288) 870d05a
    • Remove confusing comment (#286) 3352220
    • fix: rollback typescript plugin to avoid babel config conflicts (#287) 3989277
    • --noClean option for watch (#282) 9c10c70
    • docs: clarify effect of propertyReadSideEffects (#280) 5becff1
    • Merge pull request #277 from mfolnovic/master 0a7a469
    • Added documentation e9b6bbf
    • Added support for eslint report: new flag --report-file ef08ab0
    • Add node version to bug template e03c051

    https://github.com/jaredpalmer/tsdx/compare/v0.10.5...v0.11.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.3(Oct 16, 2019)

  • v0.10.2(Oct 16, 2019)

    Improvements

    • tsdx create will now default to an MIT license
    • tsdx create will try to pull author info for package.json from git and npm configs or fallback to a cute lil' prompt. This is to ensure that the bootstrapped package is publishable immediately.

    Commits

    • feat: MIT License by default (#244) 0f965a6

    https://github.com/jaredpalmer/tsdx/compare/v0.10.1...v0.10.2

    Source code(tar.gz)
    Source code(zip)
  • v0.10.1(Oct 16, 2019)

    Bugfixes

    • Remove TypeScript as peer-dep (this fixes npx tsdx create if you don't have TS installed globally)
    • Updated deps
    • Add back support for Node 8.12+

    Improvements

    • Move progress estimator cache location to node_moudles/.cache/.progress-estimator.

    Commits

    • Lazily initialize progress estimator cache (#262) 7d8c0cf
    • Fix logger integration (#256) fcfc3ac
    • Remove TS as peer dep (#261) a59d62a
    • Add back support for node 8 (#250) eb0383b
    • Update execa to the latest version 🚀 (#257) a15630a
    • Use dist path config (#251) e44cbde
    • Merge pull request #249 from yordis/yordis/fix-cache-folder d5569ec
    • Revert formatter changes ef91a9b
    • Fix cache folder location cffc994
    • Fix greenkeeper going cray (#247) a8640ca
    • Update dependencies to enable Greenkeeper 🌴 (#246) 8e82552

    https://github.com/jaredpalmer/tsdx/compare/v0.10.0...v0.10.1

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Oct 15, 2019)

    Improvements

    • Support for async/await in rollup plugins
    • Added system to format options
    • Added support for jest.config.js (it will merge with the defaults)
    • TSDX will now clean the dist directory on tsdx build

    Bugfixes

    • Fixed missing eslint deps

    POSSIBLY BREAKING

    • Dropped support for Node 8 because we moved to @wessberg/rollup-plugin-ts

    Commits

    • Merge pull request #242 from audiolion/patch-1 1a62579
    • fix: failing builds 90ecbfc
    • fix(testing): add support for jest.config.js (#229) 22c2416
    • feat: clean dist dir on build (#240) b86f715
    • docs: add skvale as a contributor (#237) dbc3d70
    • docs: add JasonEtco as a contributor (#236) 543c8d0
    • docs: add sw-yx as a contributor (#232) 93bb77a
    • docs: add jaredpalmer as a contributor (#231) 77eda51
    • Support Async/Await in Rollup Plugins (#208) bfc0590
    • Add system to list of supported formats (#228) a99f216
    • Add "test" to include key in template tsconfigs (#226) 157bcee
    • fix(dependencies): Use yarn.lock instead of pnpm-lock.yaml (#220) 5a6f033
    • Add missing dependencies required by eslint-config-react-app (#218) 29b901b

    https://github.com/jaredpalmer/tsdx/compare/v0.9.3...v0.10.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.3(Sep 30, 2019)

    Bugfixes

    • tsdx lint command no longer swallows errors

    Commits

    • remove async; fix test (#212) afb0281
    • Merge pull request #209 from skvale/fix/196-npx-lint-without-input-files 727f71c
    • feat(lint): Use src test as default input files if none are specified 3d202cf
    • [Deploy Playground] Fix Netlify build command (#207) 24a1fdc
    • Update README.md 0111130
    • [Deploy Playground] Fix Netlify build command 26ee608

    https://github.com/jaredpalmer/tsdx/compare/v0.9.2...v0.9.3

    Source code(tar.gz)
    Source code(zip)
  • v0.9.2(Sep 9, 2019)

    Bugfixes

    • Fix lint command by allowing use --write-file flag

    Internals

    • Using TS 3.6.2 internally
    • Fix race condition between build and lint tests
    • The test suite now runs against Node 8, 10, 12 x macOs, ubuntu, and windows latest (yay GitHub CI!)
    • Alpha website! (https://tsdx.netlify.com) (needs some design love and dark mode)

    Commits

    • Remove --runInBand flag 9082695
    • Fix race condition btwn build and lint tests 6e77e91
    • Upgrade typescript to 3.6.2 (#205) c1197d7
    • WIP: Website (#180) 3445aaf
    • Run tests against Node/OS version matrix (#203) 6a8a618
    • Bump mixin-deep from 1.3.1 to 1.3.2 (#202) e47b7e8
    • Attempt to fix lint test (#204) 69f3787
    • Fix lint command by allowing use --write-file flag (#199) d3e58ef
    • Update readme to reference eslint instead of tslint. (#193) e942edb

    https://github.com/jaredpalmer/tsdx/compare/v0.9.1...v0.9.2

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Sep 3, 2019)

    Bugfix

    • Fixed regression where lodash imports were being rewritten in CommonJS builds.
    • Fixed lint command

    Commits

    • Don't replace imports in cjs build (#192) 790e781
    • Fix lint command usage by husky and required files (#189) 8197e0f
    • Add local react fix to gitignore c6d2ef3

    https://github.com/jaredpalmer/tsdx/compare/v0.9.0...v0.9.1

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Aug 27, 2019)

    Improvements

    • --extractErrors has been changed to a boolean. It will just default to use a dummy URL in the ErrorProd.js component.
    • You can now extend TSDX's rollup configuration with tsdx.config.js. TSDX uses Rollup under the hood. The defaults are solid for most packages (Formik uses the defaults!). However, if you do wish to alter the rollup configuration, you can do so by creating a file called tsdx.config.js at the root of your project like so:
    // Not transpiled with TypeScript or Babel, so use plain Es6/Node.js!
    module.exports = {
      // This function will run for each entry/format/env combination
      rollup(config, options) {
        return config; // always return a config.
      },
    };
    

    The options object contains the following:

    export interface TsdxOptions {
      // path to file
      input: string;
      // Safe name (for UMD)
      name: string;
      // JS target
      target: 'node' | 'browser';
      // Module format
      format: 'cjs' | 'umd' | 'esm';
      // Environment
      env: 'development' | 'production';
      // Path to tsconfig file
      tsconfig?: string;
      // Is opt-in invariant error extraction active?
      extractErrors?: boolean;
      // Is minifying?
      minify?: boolean;
      // Is this the very first rollup config (and thus should one-off metadata be extracted)?
      writeMeta?: boolean;
    }
    

    Example: Adding Postcss

    const postcss = require('rollup-plugin-postcss');
    const autoprefixer = require('autoprefixer');
    const cssnano = require('cssnano');
    
    module.exports = {
      rollup(config, options) {
        config.plugins.push(
          postcss({
            plugins: [
              autoprefixer(),
              cssnano({
                preset: 'default',
              }),
            ],
            inject: false,
            // only write out CSS for the first bundle (avoids pointless extra files):
            extract: !!options.writeMeta,
          })
        );
        return config;
      },
    };
    

    Babel

    You can add your own .babelrc to the root of your project and TSDX will merge it with its own babel transforms (which are mostly for optimization).

    Commits

    • Merge branch 'master' of github.com:jaredpalmer/tsdx 19c2834
    • Extensible Rollup configuration (#183) cb2cf7c
    • Merge branch 'master' into v0.9 a1827e4
    • Merge pull request #185 from honzabrecka/update-babel-plugin-transform-async-to-promises 7bf3032
    • update babel-plugin-transform-async-to-promises dependency 5838fe7
    • add fixture 990f115
    • document error extraction warning a7b09da
    • make warning and invariant docs more descriptive 2207cee
    • fix minor misunderstanding in docs 0224fac
    • update docs for boolean extractErrors 111926f
    • Document customization bf6731f
    • Add ability to extend babel and rollup 50f2d5e
    • Just default to React's url for errors by default d346cc3

    https://github.com/jaredpalmer/tsdx/compare/v0.8.0...v0.9.0

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Aug 14, 2019)

    Improvements

    • Added experimental --extractErrors flag
    • Added ability to specify path to a custom tsconfig.json
    • Added --template flag to tsdx create So you can run npx tsdx create --template=react now.
    • Relaxed Jest's testMatch flag and made it overridable..
    • Added tsdx lint command with eslint x typescript x prettier.

    Bugfixes

    • Gracefully exit with code 1 when build failed (breaking change)
    • Ignore ESM cache

    Internal Stuff

    • Dropped CircleCI for GitHub CI!

    Migration Guide

    To take advantage of tsdx lint, simply add a npm script to your package.json like so.

    {
      "scripts": {
         "start": "tsdx watch",
         "build": "tsdx build",
    +    "lint": "tsdx lint"
      }
    }
    

    Commits

    • Add comma after lint command ef5a9c2
    • Update README.md c36c1a8
    • Add tsdx lint command to new project pkg.json 5a319ac
    • GitHub CI (#177) dd4123d
    • Add tsdx lint command (#99) e2f2983
    • Add some more info about extractErrors 1a2e50c
    • Update readme for errors e4da38c
    • Update createJestConfig.ts testMatch to allow for other folder… (#159) f6ecdc9
    • Ignore esm cache's locally 06b9b68
    • Add error code extract and transform (#138) a20429d
    • Provide ability to preserve console output during watch (#158) 37d7664
    • add netlify deploy instructions to react readme (#157) a382fd2
    • Add template flag to create command (#163) 8247f0a
    • Gracefully exit with code 1 when build failed (#160) c850b5c
    • Merge pull request #164 from leonardodino/react-doctype 8455d28
    • Add doctype to react template html file cfc12fe
    • Merge pull request #153 from enesTufekci/custom-tsconfig-update-readme 7b00e51
    • add custom tsconfig flag usage to readme eef0b31
    • Merge pull request #1 from palmerhq/master 68fab9e

    https://github.com/jaredpalmer/tsdx/compare/v0.7.2...v0.8.0

    Source code(tar.gz)
    Source code(zip)
  • v0.7.2(Jun 19, 2019)

    Patch

    Updated .gitignore in the templates to ignore the new esm cache

    Commits

    • fixed issue mentioned in #148 - Gitignore contains '.rts2_cache_esm' (#149) 98cf1db

    https://github.com/jaredpalmer/tsdx/compare/v0.7.1...v0.7.2

    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Jun 18, 2019)

    Patch

    • Fixed the module field in templates to reflect the new name of the ESM output bundle.

    Commits

    • HOTFIX: Fix module field in template pkg.json ab22779

    https://github.com/jaredpalmer/tsdx/compare/v0.7.0...v0.7.1

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Jun 18, 2019)

    Breaking Changes 🚨

    • TSDX will no longer build a UMD bundle by default, you now must specify it using the --format=umd,esm,cjs
    • Renamed es format to esm. So --format=es -> --format=esm. In addition, the ESM output bundle is now named <packagename>.esm.js, so update your package.json module field accordingly.
    {
      "name": "formik",
      "main":"dist/index.js",
    - "module": "dist/formik.es.production.js",
    + "module": "dist/formik.esm.js",
        ...
    }
    
    • ESM builds no longer are environment specific. If you are using env-specific code, you should document that your end users must rely on bundler tools to do variable replacement.
    • TSDX is no longer dependent on a specific TypeScript version

    Improvements ✨

    • Builds will be much faster by default since TSDX no longer builds UMD by default.
    • New spiffy ascii art when bootstrapping a new project
    • The react example now aliases the profiler build of react-dom so you can more easily do perf analysis and profiling.

    Commits

    • strip package scope in safePackageName function (#146) 4422366
    • No env specific bundle for ESM (#142) 0f9d964
    • Don't depend on specific TS version (#147) 830e104
    • Merge pull request #145 from quentin-sommer/patch-1 2fb7e05
    • Update README.md d837fa3
    • use profiler build of react for playground 943648e
    • Fix dependecines => dependencies (#131) d75f548
    • Merge branch 'master' of github.com:jaredpalmer/tsdx 2134755
    • Run prettier on contributing.md 0cd316c
    • Remove UMD format from default build outputs (#126) e81f5a6
    • Add spiffy ascii art to tsdx create (#129) c7f58a1
    • Fix --format=es (#128) 47fb723

    https://github.com/jaredpalmer/tsdx/compare/v0.6.1...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(May 31, 2019)

    What's New?

    • Add ability to specify custom tsconfig.json by passing --tsconfig flag

    Bugfixes

    • Fixed @babel/preset-env resolution

    Commits

    • Use require.resolve for @babel/preset-env 823acc9
    • feat(custom-tsconfig): Add ability to specify custom tsconfig.json (#124) 22ee1d0
    • Fix React template .gitignore (#123) 8d9d478
    • Document react template usage with lerna (#119) 2567ff8

    https://github.com/jaredpalmer/tsdx/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(May 29, 2019)

    Improvements

    • Better transpilation via babel-preset-env and a few generator plugins.
    • Fixed shebang woes so making CLI's should work again

    Commits

    • Better compilation via Babel (#117) b6492a1
    • @babel/preset-env (#102) 988cc1f

    https://github.com/jaredpalmer/tsdx/compare/v0.5.12...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.12(May 28, 2019)

    Bugfix

    • Make es5 the default target for typescript.

    Commits

    • Remove esnext target override from ts rollup config. Make es5 the default target. (#111) e06d690
    • Update CONTRIBUTING.md e040514
    • Update CONTRIBUTING.md 9cc322e
    • Create CONTRIBUTING.md (#108) 779e156
    • Add prepare npm task 74c9a9d

    https://github.com/jaredpalmer/tsdx/compare/v0.5.11...v0.5.12

    Source code(tar.gz)
    Source code(zip)
  • v0.5.11(May 16, 2019)

  • v0.5.10(May 16, 2019)

    Commits

    • Fix rollup config 71817a3
    • Turn off lodash replacement in cjs af526a5
    • add initial React user guide (#74) f01da2e
    • document rollup config treeshaking (#98) 73daf23
    • fix minor typo d98c6df
    • Document some of the optimizations (#97) 71212dd

    https://github.com/jaredpalmer/tsdx/compare/v0.5.9...v0.5.10

    Source code(tar.gz)
    Source code(zip)
  • v0.5.9(May 10, 2019)

    Improvements

    • Added build npm task to example

    Bugfixes

    • Fixed babel optimizations!

    Commits

    • Explicitly specify ts and tsx extensions in babel options (#96) 6512b46
    • Merge pull request #93 from slorber/patch-1 517b8fa
    • add "yarn build" for example 8033699

    https://github.com/jaredpalmer/tsdx/compare/v0.5.8...v0.5.9

    Source code(tar.gz)
    Source code(zip)
  • v0.5.8(May 8, 2019)

    Bugfixes

    • Fix example parcel aliasing when using React Hooks
    • Fixed module detection on windows!
    • Removed writing Jest config

    Commits

    • Remove writing to jest config (#92) 437bcd0
    • Fix external module detection on Windows (#89) 78bb42f
    • Use parcel's aliasing for react template example deps (#88) 5a5b9ac

    https://github.com/jaredpalmer/tsdx/compare/v0.5.7...v0.5.8

    Source code(tar.gz)
    Source code(zip)
Owner
Jared Palmer
Founder @turborepo. Author of Formik, Razzle, TSDX, and other goodies.
Jared Palmer
CLI tool for typescript tasks & migrations

typed CLI tool for typescript tasks & migrations Installation Usage $ typed --list Subcommands: bootstrap ?? Bootstrap your environment for TypeS

Lob 1 Nov 15, 2021
A small system that allow you to manage hosts stored in your .ssh/config file

A small system that allow you to manage hosts stored in your .ssh/config using simple commands.

Simone Ostini 1 Jan 24, 2022
Sink is a CLI tool that allows users to synchronize their local folders to their Google Drives. It is similar to the Git CLI and allows fast and reliable syncs with the drive.

Sink is a CLI synchronisation tool that enables a user to synchronise local system files and folders with their Google Drives. It follows a git C

Yash Thakre 16 May 29, 2022
flora-dev-cli (fd-cli) is command line interface software to interact with flora blockchain.

Install git clone https://github.com/Flora-Network/fd-cli.git cd fd-cli python3 -m venv venv source venv/bin/activate pip install -e . --extra-index-u

null 14 Sep 11, 2022
AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

Rafael Torres 2 Dec 10, 2021
Python-Stock-Info-CLI: Get stock info through CLI by passing stock ticker.

Python-Stock-Info-CLI Get stock info through CLI by passing stock ticker. Installation Use the following command to install the required modules at on

Ayush Soni 1 Nov 5, 2021
A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool

Privateer A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool How

Shreyash Chavan 2 Apr 4, 2022
Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python

YTSP It is a CLI movie streaming client which works on yts.mx API written in pyt

null 1 Feb 5, 2022
[WIP]An ani-cli like cli tool for movies and webseries

mov-cli A cli to browse and watch movies. Installation This project is a work in progress. However, you can try it out python git clone https://github

null 166 Dec 30, 2022
A Python package for Misty II development

Misty2py Misty2py is a Python 3 package for Misty II development using Misty's REST API. Read the full documentation here! Installation Poetry To inst

Chris Scarred 1 Mar 7, 2022
Dead simple CLI tool to try Python packages - It's never been easier! :package:

try - It's never been easier to try Python packages try is an easy-to-use cli tool to try out Python packages. Features Install specific package versi

Timo Furrer 659 Dec 28, 2022
Open-Source Python CLI package for copying DynamoDB tables and items in parallel batch processing + query natural & Global Secondary Indexes (GSIs)

Python Command-Line Interface Package to copy Dynamodb data in parallel batch processing + query natural & Global Secondary Indexes (GSIs).

null 1 Oct 31, 2021
A Python package for a basic CLI and GUI user interface

Bun Bun (Basic user interface) is a small Python package for a basic user interface. Table of contents Introduction Installation Usage Known issues an

Caltech Library 12 Mar 25, 2022
Python package with library and CLI tool for analyzing SeaFlow data

Seaflowpy A Python package for SeaFlow flow cytometer data. Table of Contents Install Read EVT/OPP/VCT Files Command-line Interface Configuration Inte

SeaFlow@UW 3 Nov 3, 2021
Container images for portable development environments

Docker Dev Spin up a container to develop from anywhere! To run, just: docker run -ti aghost7/nodejs-dev:boron tmux new Alternatively, if on Linux: p

Jonathan Boudreau 163 Dec 22, 2022
Textual: a TUI (Text User Interface) framework for Python inspired by modern web development

Textual Textual is a TUI (Text User Interface) framework for Python inspired by

null 17.1k Jan 4, 2023
CLI for SQLite Databases with auto-completion and syntax highlighting

litecli Docs A command-line client for SQLite databases that has auto-completion and syntax highlighting. Installation If you already know how to inst

dbcli 1.8k Dec 31, 2022
Postgres CLI with autocompletion and syntax highlighting

A REPL for Postgres This is a postgres client that does auto-completion and syntax highlighting. Home Page: http://pgcli.com MySQL Equivalent: http://

dbcli 10.8k Jan 2, 2023