Skip to content

Releases: facebook/jscodeshift

v0.6.2

06 Dec 01:01

Choose a tag to compare

Changed

  • @babel/register/@babel/preset-env is configured to not transpile any
    language features that the running Node process supports. That means if you use
    features in your transform code supported by the Node version you are running,
    they will be left as is. Most of ES2015 is actually supported since Node v6.
  • Do not transpile object rest/spread in transform code if supported by running
    Node version.

Fixed

  • Presets and plugins passed to @babel/register are now properly named and
    loaded.

v0.6.1

05 Dec 07:10

Choose a tag to compare

Added

  • Tranform files can be written in Typescript. If the file extension of the
    transform file is .ts or .tsx, @babel/preset-typescript is used to
    convert them. This requires the --babel option to be set (which it is by
    default). ( #287 , @brieb )

Changed

  • The preset and plugins for converting the transform file itself via babeljs
    have been updated to work with babel v7. This included removing
    babel-preset-es2015 and babel-preset-stage-1 in favor of
    @babel/preset-env. Only @babel/proposal-class-properties and
    @babel/proposal-object-rest-spread are enabled as experimental features. If
    you want to use other's in your transform file, please create a PR.

Fixed

  • Typescript parses use @babel/parser instead of Babylon ( #291, @elliottsj )

Bumped

  • micromatch => v3.1.10, which doesn't (indirectly) depend on randomatic <
    v3 anymore (see #292).

v0.6.0

04 Dec 00:54

Choose a tag to compare

A bunch of changes to get jscodeshift in a better shape. This is minor version update because important dependencies and parser configurations have changed.


New

  • New CLI option --parser-config: This option accepts a path to a JSON file and overrides the default options for flow or babylon. This allows you to tweak parser settings (e.g. legacy decorators). (46d250f)
  • New CLI option --stdin: If provided, the list of files/directories is read from stdin. This makes it easier to pass large lists of files. (b6eaa0a)
  • New API in transforms: api.report lets you print arbitrary text to stdout. Useful if another tools consumes jscodeshift's stdout. (c902a00) Example:
// In the transform
api.report('some data');

// in stdout
 REP path/to/file.js some data
  • Support for Typescript source code, via babylon ( #286 ; @brieb). Use --parser=ts or --parser=tsx.

Improvements

Fixes

  • JSXElements's hasAttributes method understands value-less Boolean attributes (#277 , @artemruts )
  • More reliable printing to stdout (62b12ad)

Internal

  • Replaces deprecated nomnom with own implementation (a2becc5)
  • Remove direct dependency on lodash (4701096)

v0.5.0

07 Mar 05:12

Choose a tag to compare

New

  • Bump recast and babylon to support JSX fragments (#239)
  • Add dynamicImport plugin to babylon parser. (#208)
  • Allow specifying a testName for inline tests (#218)
  • Add some() and every() methods for Collection (#216)

Fixed/Improved

  • Fix error handling for http (#242)
  • Perf: replace async with neo-async (#241)
  • Fix renameTo renaming React component prop name unexpectedly (#220)
  • Fix renameTo not taking property shorthands into account (#211)

v0.3.32

20 Jun 15:08

Choose a tag to compare

New

@TheSavior added the possibility to define tests inline, without having to create separate files for input and output:

const transform = require('../myTransform');
defineInlineTest(transform, {}, 'input', 'expected output');

#204

v0.3.31

13 Jun 05:16

Choose a tag to compare

Fixes

  • Printing issues by bumping recast and babylon versions ( #200 , #201 @xixixao)
  • Bug with template.expression when a literal with no interpolation was used ( #196, @jsnajdr)

Internally


Thank you @xixixao, @jsnajdr and @wtgtybhertgeghgtwtg for contributing!

v0.3.30

25 Oct 20:13

Choose a tag to compare

Fixes

v0.3.29

25 Oct 17:46

Choose a tag to compare

New

  • Collections now have a .length property which is equivalent to .size() (#151, @DrewML)

  • You can now reference jscodeshift as j directly from the transform's API options. I.e. you can write

    export default function transformer(file, { j }) {
      return j(file.source).toSource();
    }

    instead of

    export default function transformer(file, api) {
      const j = api.jscodeshift;
    
      return j(file.source).toSource();
    }

    or

    export default function transformer(file, {jscodeshift: j}) {
      return j(file.source).toSource();
    }

    (#153, @vjeux)

Improved

  • Experimental settings have been enabled for the flow parser, so it is now be able to process files that use e.g. public class fields (a2e4a3a)

v0.3.28

15 Aug 16:28

Choose a tag to compare

New

Changed

  • Better error message when using .get on an empty collection ( #140 , @DrewML )
  • jscodeshift now depends on recast v0.11.11 which adds better support for new flow type constructs.

v0.3.27

29 Jul 23:10

Choose a tag to compare

Fixes