Nightmarish Pawnshop Mystic

    scatterbrain

    1.0.0 • Public • Published

    Scatterbrain

    Scatterbrain is a package which helps you configure your preferred flavour of JavaScript with multiple tools.

    The interface is the same as has been developed recently for node.js, which is still experimental and may change. The point is to enable your code to run on node and all other platforms at once.

    Motivation

    Using a language other than JavaScript has never been exactly easy in a node project, especially one which also has a web component.

    You need to:

    • Configure how transpilation works for each extension
    • Configure how to resolve files, in case you use aliases or drop-in replacements like react-native

    And once you do configure that for node, eslint, prettier, webpack, jest, mocha, or any other tool which needs to read and/or run your code, every time you add a new tool or language, you have to painstakingly configure it from scratch.

    The JS community has had scatterbrain for long enough.

    Configuration

    You configure your nodejs runtime using package.json, which allows you to use import and absolute imports in plain old NodeJS (if you wish to use NodeJS).

    {
      "type": "module",
      "imports": {
        "#lib/": "./lib"
      }
    }

    SOON: scatterbrain will support the experimental loaders API.

    Webpack

    To configure webpack, grab scatterbrain/webpack and insert its adapters into your config as such:

    webpack.config.js:

    const rootPath = __dirname // Path to where package.json is
    const packageJson = require('./package.json')
    const scatterbrain = require('scatterbrain/webpack')
     
    module.exports = {
      module: {
        rules: [
          scatterbrain.rule(rootPath, packageJson)
        ]
      },
      resolve: {
        alias: scatterbrain.aliases(rootPath, packageJson)
      }
    }

    Jest

    jest.config.js:

    const rootPath = __dirname // Path to where package.json is
    const packageJson = require('./package.json')
    const scatterbrain = require('scatterbrain/jest')
    
    module.exports = {
      moduleNameMapper: {
        ...scatterbrain.moduleNameMapper(rootPath, packageJson)
      }
    }
    

    Roadmap

    • Implement adapters for as many tools as possible
    • Transpile JavaScript according to experimental loaders API.
    • Use a shared synchronised compilation cache
    • Provide a way to replace modules with drop-in replacements (possibly with config :( )

    Keywords

    none

    Install

    npm i scatterbrain

    DownloadsWeekly Downloads

    0

    Version

    1.0.0

    License

    ISC

    Unpacked Size

    4.36 kB

    Total Files

    5

    Last publish

    Collaborators

    • fabiosantoscode