Giter VIP home page Giter VIP logo

immutable-devtools's Introduction

Chrome Dev Tools for Immutable-js

Npm Version NPM downloads devDependency Status

The Immutable library is fantastic, but inspecting immutable collections in Chrome's Dev Tools is awkward. You only see the internal data structure, not the logical contents. For example, when inspecting the contents of an Immutable List, you'd really like to see the items in the list.

Chrome (v47+) has support for custom "formatters". A formatter tells Chrome's Dev Tools how to display values in the Console, Scope list, etc. This means we can display Lists, Maps and other collections, in a much better way.

Essentially, it turns this:

Before

into:

After

This library provides a formatter to do just that.

Features

The library currently has formatters for:

  • List
  • Map & OrderedMap
  • Set & OrderedSet
  • Stack
  • Range (let me know if you use this :-), add ๐Ÿ‘ to #21)
  • Repeat (if you wish this, add ๐Ÿ‘ to #22)
  • Record
  • Seq โ€” I do not have an idea how to display it. If you know, write it down into #23

Want something more? Write down your wishes!

Installation

Chrome v47+

In Dev Tools, press F1 to load the Settings. Scroll down to the Console section and tick "Enable custom formatters".

Then, in your project, install via npm:

npm install --save-dev immutable-devtools

And enable with:

var Immutable = require("immutable");

var installDevTools = require("immutable-devtools");
installDevTools(Immutable);

Note: You probably only want this library for debug builds, so perhaps wrap with if (DEBUG) {...} or similar.

Chrome Extension

Matt Zeunert created a Chrome Extension based on this project. It automatically installs the formatters when you open the DevTools. (Install from Chrome Web Store).

Using with webpack

You could use webpack.DefinePlugin to create a condition that will be allowed to install immutable-devtools in the debug build but unreachable in the production build:

// webpack.config.js
var webpack = require('webpack');
module.exports = {
  // ...
  plugins: [
    new webpack.DefinePlugin({
      __DEV__: JSON.stringify(process.env.NODE_ENV !== 'production')
    })
  ],
};

In your source you'd have something like this...

// index.js
var immutable = require('immutable');
if (__DEV__) {
  var installDevTools = require('immutable-devtools');
  installDevTools(immutable);
}

And then by adding the -p shortcut to webpack for production mode which enables dead code elimination, the condition that requires immutable-devtools will be removed.

NODE_ENV=production webpack -p index.js

See #16 for more info.

immutable-devtools's People

Contributors

andrewdavey avatar langpavel avatar colbyr avatar mattzeunert avatar akre54 avatar jedwards1211 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  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.