germs

0.1.9 • Public • Published

npm npm npm

germs

an opinionated hack-space for building things fast without spending a bunch of time setting things up

Installation

Installing germs as a dependency:

yarn install germs nps nps-utils -D or npm i germs nps nps-utils -D

Installing nps - a delightful build tool (optional but useful):

yarn install nps global or npm i nps -g

Using germs

Create a new file package-scripts.js, and place the following in it.

const germs = requⅰre("germs")
const {name} = requⅰre("package.json")
module.exports = germs(name)

Here is an example from germs own specific package-script.js file.

Opinions

germs relies on the following modules for a good build experience:

Build

  • nps for build tasks

Compile

  • babel for per-file conversion
  • rollup for bundled conversion

Test

  • jest for testing
  • execa for testing CLI implementations
  • dont-break for downstream testing

Quality of Life for Developers

  • eslint for static analysis rules (static analysis rules!)
  • documentation for automatic jsdoc > documentation generation
  • madge for dependencies and graphs
  • depcheck for (sometimes-unreliable) dependency checking
  • updtr for automatic package updates
  • husky for some commit conventions (use --no-verify to skip)

Commands

  • nps dependencies.check - check dependencies
  • nps dependencies.graph - generate a visual dependency graph
  • nps dependencies.graphjson - generate a visual dependency graph in json
  • nps dependencies.graphdot - generate a visual dependency graph in dot
  • nps readme - regenerate the readme
  • nps lint - lint both the js and the jsdoc
  • nps lint.src - lint js files
  • nps lint.jsdoc - lint jsdoc in files
  • nps test - run all tests with coverage
  • nps test.unit - run unit tests
  • nps docs - auto regen the docs
  • nps bundle - run the main bundle task
  • nps build - convert files individually
  • nps care - run all the things
  • nps precommit - nps care

Contributing

Contributions welcome!

germs is opinionated, but your suggestions / contributions are welcome.

API

rollup

Parameters

  • custom Object configuration
    • custom.name string name of project
    • custom.alias Object aliases to use in the project
    • custom.external Array an array of external dependencies
    • custom.alterPlugins Function an optional function which gets the plugins as input
    • custom.customize Function an optional function which allows you to alter all output

Examples

const pkg = require(`../package.json`)
const {rollup} = require(`../germs`)
const external = (
  pkg && pkg.dependencies ? Object.keys(pkg.dependencies) : []
)
 
module.exports = rollup({
  name: pkg.name,
  alias: {
    [`@tools`]: `./tools`
  },
  external
})

Returns Object config file for rollup

bundle

Parameters

  • custom Object configuration
    • custom.name string name of project
    • custom.alias Object aliases to use in the project
    • custom.external Array an array of external dependencies
    • custom.alterPlugins Function an optional function which gets the plugins as input
    • custom.customize Function an optional function which allows you to alter all output
    • custom.input string an input file
    • custom.output Object an output object
      • custom.output.file string an output file
      • custom.output.format string an output format

Examples

const pkg = require(`../package.json`)
const {bundle} = require(`../germs`)
const external = (
  pkg && pkg.dependencies ?
    Object.keys(pkg.dependencies) :
    []
)
module.exports = bundle({
  name: pkg.name,
  alias: {
    [`@tools`]: `./tools`
  },
  external,
  input: `src/index.js`,
  output: {
    file: `./${pkg.name}.js`,
    format: `cjs`
  }
})

Returns Object config file for rollup

Readme

Keywords

Package Sidebar

Install

npm i germs

Weekly Downloads

23

Version

0.1.9

License

ISC

Last publish

Collaborators

  • brekk