node-utils
Basic Node.js utility functions. Complements the standard library, no dependencies.
Introduction
Basic utility functions which complement the standard library. Mostly used in my own projects.
Installation
Install with:
npm install -g @dwmkerr/node-utils
Then important use functions as needed.
import { deleteIfExists } = require('@dwmkerr/node-utils');
Developer Guide
The only dependencies are Node LTS (or above).
Useful commands for development are:
Command | Usage |
---|
npm test | Runs the unit tests. |
npm run test:debug | Runs the tests in a debugger. Combine with .only and debugger for ease of debugging. |
npm run cov | Runs the tests, writing coverage reports to ./artifacts/coverage . |
Currently the linting style is based on airbnb. Run npm run lint
to lint the code.
Initial Setup
Install the dependencies (I recommend Node Version Manager):
nvm install --lts
nvm use --lts
git clone git@github.com:dwmkerr/node-utils.git
cd node-utils
npm install && npm test
Running Tests
Run the tests with:
npm test
Tests are executed with Mocha and coverage is handled by Istanbul. Coverage reports are written to an ./artifacts
folder.
Note that best practices are to pass Mocha a quoted string with a glob pattern for cross-platform execution of tests (see Mocha Docs). However for some reason on AppVeyor this doesn't seem to work. Leaving the pattern unquoted works for cmd
as well as the shell in builds for now. So please be careful if changing the quotes and test on both platforms.
Commit Messages
Conventional Commits should be used. This allows the CHANGELOG to be kept up to date automatically, and ensures that semantic versioning can be expected from the library.
Creating a Release
To create a release.
- Merge your work to master.
- Use
npm run release
. - Push and deploy
git push --tags && git push && npm publish
Note that semantic-version
is used, meaning a changelog is automatically kept up to date, and versioning is handled semantically based on the commit message.
Builds
Builds are run on CircleCI. You can run the CircleCI build locally with the following command:
make circleci