Naval Pilgrim's Mayflower

    grunt-jscodeshift

    0.1.0 • Public • Published

    grunt-jscodeshift

    Grunt task to run codemods using jscodeshift

    Common Usage

    jscodeshift is a tool for running codemods over multiple js files in parallel, which is great for refactoring large codebases. Read more about it here.
    grunt-jscodeshift is a simple Grunt task that wraps the jscodeshift runner and lets you execute transformations as part of your Grunt workflow.

    Example (somewhat contrived)

    Original source code file code.js

    var myHeading = document.querySelector('h1');
    myHeading.textContent = 'Hello world!';

    Transform file transform.js

    module.exports = function transformer(file, api) {
      var j = api.jscodeshift;
     
      return j(file.source)
        .find(j.Identifier)
        .replaceWith(function(p) {
          return j.identifier(p.node.name.split('').reverse().join('')); })
        .toSource();
    };

    Transformed source code file code.js

    var gnidaeHym = tnemucod.rotceleSyreuq('h1');
    gnidaeHym.tnetnoCtxet = 'Hello world!';

    Getting Started

    This plugin requires Grunt ~0.4.5

    If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

    npm install grunt-jscodeshift --save-dev

    Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

    grunt.loadNpmTasks('grunt-jscodeshift');

    The "jscodeshift" task

    grunt.initConfig({
      "jscodeshift": {
        "some-target": {
          "options": {
            "transform": "./transform.js"
          },
          "src": ["src/**/*.js"]
        }
      },
    });

    Since jscodeshift is designed for code-modifications, it overwrites the source files it iterates over.
    If this is not your desired behavior, clone the files beforehand with grunt-contrib-copy.

    Options

    The options object is passed to jscodeshift. See the jscodeshift documentation for all options.

    options.transform

    Type: String Default value: './transform.js'

    Path to the transform file.

    Contributing

    Feel free to open issues and send pull-requests.

    Running tests

    Run npm test

    Keywords

    Install

    npm i grunt-jscodeshift

    DownloadsWeekly Downloads

    287

    Version

    0.1.0

    License

    none

    Last publish

    Collaborators

    • cowchimp