GithubHelp home page GithubHelp logo

ewnd9 / js-codemod Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cpojer/js-codemod

0.0 3.0 0.0 169 KB

Codemod scripts to transform code to next generation JS

License: MIT License

JavaScript 100.00%

js-codemod's Introduction

js-codemod Build Status

This repository contains a collection of codemod scripts for use with JSCodeshift.

Setup & Run

npm install -g jscodeshift
git clone https://github.com/cpojer/js-codemod.git
jscodeshift -t <codemod-script> <file>

Use the -d option for a dry-run and use -p to print the output for comparison.

Included Scripts

arrow-function-arguments

jscodeshift -t js-codemod/transforms/arrow-function-arguments.js <file>

arrow-function

Transforms callbacks only when it can guarentee it won't break this context in the function. Also transforms function() { }.bind(this) calls to () => {}.

jscodeshift -t js-codemod/transforms/arrow-function.js <file>
Options:

--inline-single-expressions=true: If you are feeling lucky and you know that returning the value of single-expression functions will not affect the behavior of your application you can specify the option and it will transform function() { relay(); } to () => relay() instead of () => { relay(); }.

--max-width=120: Try the best it can to keep line lengths under the specified length.

invalid-requires

jscodeshift -t js-codemod/transforms/invalid-requires.js <file>

jest-update

jscodeshift -t js-codemod/transforms/jest-update.js <file>

no-vars

Conservatively converts var to const or let.

jscodeshift -t js-codemod/transforms/no-vars.js <file>

object-shorthand

Transforms object literals to use ES6 shorthand for properties and methods.

jscodeshift -t js-codemod/transforms/object-shorthand.js <file>

outline-require

jscodeshift -t js-codemod/transforms/outline-require.js <file>

rm-copyProperties

jscodeshift -t js-codemod/transforms/rm-copyProperties.js <file>

rm-merge

jscodeshift -t js-codemod/transforms/rm-merge.js <file>

rm-requires

Removes any requires where the imported value is not referenced. Additionally if any module is required more than once the two requires will be merged.

jscodeshift -t js-codemod/transforms/rm-requires.js <file>

template-literals

Replaces string concatenation with template literals.

jscodeshift -t js-codemod/transforms/template-literals.js <file>

Adapted from "How to write a codemod" by Ramana Venkata.

Areas of improvement:

  • Comments in the middle of string concatenation are currently added before the string but after the assignment. Perhaps in these situations, the string concatenation should be preserved as-is.

  • Nested concatenation inside template literals is not currently simplified. Currently, a + b${'c' + d} becomes ${a}b${'c' + d} but it would ideally become ${a}b${`c${d}`}.

  • Unnecessary escaping of quotes from the resulting template literals is currently not removed. This is possibly the domain of a different transform.

  • Unicode escape sequences are converted to unicode characters when the simplified concatenation results in a string literal instead of a template literal. It would be nice to perserve the original--whether it be a unicode escape sequence or a unicode character.

touchable

jscodeshift -t js-codemod/transforms/touchable.js <file>

trailing-commas

Adds trailing commas to array and object literals.

jscodeshift -t js-codemod/transforms/trailing-commas.js <file>

unchain-variables

Unchains chained variable declarations.

jscodeshift -t js-codemod/transforms/unchain-variables.js <file>

unquote-properties

Removes quotes from object properties whose keys are strings which are valid identifiers.

jscodeshift -t js-codemod/transforms/unquote-properties.js <file>

updated-computed-props

jscodeshift -t js-codemod/transforms/updated-computed-props.js <file>

use-strict

Adds a top-level 'use strict' statement to JavaScript files

jscodeshift -t js-codemod/transforms/use-strict.js <file>

Included extensions

jscodeshift-imports helpers for modifying import and require statements, see docs.

Recast Options

Options to recast's printer can be provided through the printOptions command line argument

jscodeshift -t transform.js <file> --printOptions='{"quote":"double"}'

js-codemod's People

Contributors

cpojer avatar lencioni avatar iamdustan avatar pieterv avatar vjeux avatar forbeslindesay avatar janicduplessis avatar rknoll avatar alangpierce avatar lemonmade avatar daniel15 avatar thesavior avatar pdehaan avatar rosswarren avatar yungsters avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.