π rollup-jest-boilerplate
Full featured boilerplate for building JavaScript libraries the modern way.
Features
π Rollup.js configuration providing compatibility with different module systems (CommonJS, ECMAScript, UMD for<script>
tags)π Jest setup with watch mode workingπ Renovate configuration for auto updates (you have to activate it via https://github.com/apps/renovate)π Yarn with lock file, pinned devDependencies and fixed Yarn version in .yarnrc using Yarn policiesβ Travis CIπ .nvmrc file to enforce the Node.js version for contributors and continuous integrationβ‘οΈ Ready to publish and use
How to use
Decide of a new library name, let's say new-super-library
(π€¦πΌββοΈ), then in a terminal:
curl --output rollup-jest-boilerplate.zip -LOk https://github.com/algolia/rollup-jest-boilerplate/archive/master.zip
unzip rollup-jest-boilerplate.zip
rm rollup-jest-boilerplate.zip
mv rollup-jest-boilerplate-master new-super-library
Next steps:
- search the project for
rollup-starter-lib
and replace everywhere withnew-super-library
- start coding in src/main.js
- profit
πΈ
Live examples
Those examples are using the live published version of this boilerplate library on npm and they run with CodeSandbox.
- ECMAScript
- CommonJS
- UMD, this leverages jsDelivr npm CDN
Developer environment requirements
To run this project, you will need:
- Node.js >= v10.5.0, use nvm - install instructions
- Yarn >= v1.7.0 - install instructions ("Alternatives" tab)
Running tests
yarn
yarn test
yarn test --watch
Dev mode
When developing you can run:
yarn watch
This will regenerate the build files each time a source file is changed and serve on http://127.0.0.1:5000.
Previewing umd build in the browser
If your package works in the browser, you can open dev/index.html
to try it out.
Publishing
npm publish
Additional tooling
Based on your need, you might want to add:
- ESLint and Prettier
- TypeScript support
- Monorepo support with Lerna
- CHANGELOG.md generation with conventional-changelog
If so, please do and open pull requests when you feel like it.
Original idea
I initially used rollup/rollup-starter-lib but really needed that Jest support so I did it.