Automated development tasks (linting, testing, building) used in my own projects.
This is not meant to be shared and semantic versioning is not followed.
The task runner is Gulp, but you don't need to know Gulp to use these tasks.
Code is compiled from the
src to the
build directory using
Linting and formatting are performed with ESLint, Prettier and Jscpd. We recommend using plugins with your IDE (code editor) for both Prettier and ESLint so that linting/formatting is performed as you code.
We use Ava to run tests. Each line of code must be tested.
Any task can be run using
gulp for example:
If you're on
cmd.exe (Windows) use
npx gulp ... instead.
The main commands are:
gulp build: build source files and test files. Must be run before running any code or unit tests.
gulp unit: run unit tests.
gulp test: perform the three tasks above.
gulp buildw and
gulp unitw to run them in watch mode.
GitHub actions ensures that:
- tests pass on all supported environments.
- all source files are covered by tests and follow the same coding style.
Lint and check source files:
- find duplicated code with Jscpd.
Build source files and test files:
- Other files are copied as is.
Source files are built from the
src directory to the
Test files are built from the
test directory to the
This must be done before running any code or unit tests.
Run unit tests with Ava.
ava directly instead. For example:
To target a single test file, use
ava build/test/file.js not
This is performed on CI (GitHub acitons) for each OS (Windows, Mac, Linux) and supported Node.js version.
gulp unit and
gulp warn but in watch mode.
The watch mode works even when installing/updating/uninstalling dependencies or
changing the Gulp tasks themselves.
They can be performed together, e.g.
gulp buildw in one terminal tab and
gulp unitw in another.
Release a new patch/minor/major version on npm and GitHub using
npm publish must also be performed locally.
Only the repository owner can perform these tasks.
Repositories with a
gulp top-level directory have additional tasks. Please
check those files to see which custom tasks are available.
For any question, don't hesitate to submit an issue on GitHub.
Everyone is welcome regardless of personal background. We enforce a Code of conduct in order to promote a positive and inclusive environment.
This project was made with
If the documentation is unclear or has a typo, please click on the page's
button (pencil icon) and suggest a correction.
If you would like to help us fix a bug, please check our guidelines. Pull requests are welcome!