germs
v0.1.9
Published
an opinionated build toolset that is dead-simple so you can focus on writing code
Downloads
8
Readme
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 conversionrollup
for bundled conversion
Test
jest
for testingexeca
for testing CLI implementationsdont-break
for downstream testing
Quality of Life for Developers
eslint
for static analysis rules (static analysis rules!)documentation
for automatic jsdoc > documentation generationmadge
for dependencies and graphsdepcheck
for (sometimes-unreliable) dependency checkingupdtr
for automatic package updateshusky
for some commit conventions (use--no-verify
to skip)
Commands
nps dependencies.check
- check dependenciesnps dependencies.graph
- generate a visual dependency graphnps dependencies.graphjson
- generate a visual dependency graph in jsonnps dependencies.graphdot
- generate a visual dependency graph in dotnps readme
- regenerate the readmenps lint
- lint both the js and the jsdocnps lint.src
- lint js filesnps lint.jsdoc
- lint jsdoc in filesnps test
- run all tests with coveragenps test.unit
- run unit testsnps docs
- auto regen the docsnps bundle
- run the main bundle tasknps build
- convert files individuallynps care
- run all the thingsnps precommit
- nps care
Contributing
Contributions welcome!
germs
is opinionated, but your suggestions / contributions are welcome.
API
rollup
Parameters
custom
Object configurationcustom.name
string name of projectcustom.alias
Object aliases to use in the projectcustom.external
Array an array of external dependenciescustom.alterPlugins
Function an optional function which gets the plugins as inputcustom.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 configurationcustom.name
string name of projectcustom.alias
Object aliases to use in the projectcustom.external
Array an array of external dependenciescustom.alterPlugins
Function an optional function which gets the plugins as inputcustom.customize
Function an optional function which allows you to alter all outputcustom.input
string an input filecustom.output
Object an output object
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