@zairakai/js-dev-tools
v1.2.1
Published
The unified and centralized development toolkit for JavaScript/TypeScript projects - ESLint, Prettier, Stylelint, Knip, Vitest, Git Hooks, and GitLab CI pipeline templates
Maintainers
Readme
@zairakai/js-dev-tools
One unified toolkit to set up JavaScript/TypeScript quality tooling. Context-aware by default — it adapts to both standalone packages and full-stack applications.
Why @zairakai/js-dev-tools?
| Concept | Benefit |
| :--- | :--- |
| Unified Logic | The same quality gate for all your projects. Only the target (package or app) changes, not the rigor. |
| Concentrated Configs | Centralized, opinionated configurations for all your tools. Avoid configuration drift across projects. |
| Unified Workflow | One set of make commands to rule them all. Whether it's a small library or a large application, the quality gate remains the same. |
| Auto-Syncing CI | Automatically updates GitLab CI ref tags in your .gitlab-ci.yml when you update the package. Keep your pipelines current without manual effort. |
| Zero Friction | Automated setup script handles the heavy lifting on install. |
Features
| Tool | Responsibility |
| :--- | :--- |
| ESLint | Flat config with TypeScript, Vue 3, and import rules. |
| Prettier | Opinionated formatter with SCSS and Tailwind support. |
| Stylelint | SCSS linting with modern property ordering. |
| Markdownlint | Consistent Markdown across all documentation. |
| Vitest | Unit testing with v8 coverage. |
| Knip | Dead code and unused dependency detection. |
| TypeScript | Shared tsconfig.base.json for strict mode builds. |
| GitLab CI | Reusable pipeline templates for npm packages and Laravel full-stack. |
| Git Hooks | Automated quality checks and ticket prefixing. |
| Makefile | Unified make quality, make test, make ci targets (delegated to core). |
| Shell Scripts | Automated setup and config publishing. |
On install, the postinstall script:
- creates
Makefileif missing (delegating tonode_modules/@zairakai/js-dev-tools/tools/make/core.mk) - creates
.editorconfig - creates
config/dev-tools/eslint.config.jsbaseline - reports optional packages not yet installed
Install
npm install --save-dev @zairakai/js-dev-toolsFor Laravel full-stack projects, pair with zairakai/laravel-dev-tools:
composer require --dev zairakai/laravel-dev-tools
npm install --save-dev @zairakai/js-dev-tools
php artisan dev-tools:publish --fullstackUsage
make quality # eslint + prettier + stylelint + knip + markdownlint + shellcheck
make quality-fix # auto-fix all fixable issues
make test # vitest
make test-all # vitest + bats
make test-coverage # vitest with coverage report
make typecheck # tsc --noEmit
make build # tsup or tsc
make ci # full pipeline simulation
make doctor # environment diagnosticsConfiguration
Extend the shared configs in your project files:
// eslint.config.js
export { default } from '@zairakai/js-dev-tools/eslint'
// prettier.config.js
export { default } from '@zairakai/js-dev-tools/prettier'
// stylelint.config.js
export { default } from '@zairakai/js-dev-tools/stylelint'
// vitest.config.js
import baseConfig from '@zairakai/js-dev-tools/vitest'
import { defineConfig } from 'vitest/config'
export default defineConfig({ ...baseConfig, test: { ...baseConfig.test } })// tsconfig.json
{ "extends": "@zairakai/js-dev-tools/tsconfig" }Publishing configs
Publish individual config files to config/dev-tools/ (never overwritten unless --force):
# All at once
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish
# By group
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=quality
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=style
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=testing
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=hooks
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=gitlab-ci
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=typescript
# Single files
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=eslint
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=prettier
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=stylelint
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=vitest
bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --publish=tsconfigGitLab CI pipeline templates
Include in your consumer project's .gitlab-ci.yml:
# npm package pipeline
include:
- project: 'zairakai/npm-packages/js-dev-tools'
ref: v1.0.0 # pin to a release tag for reproducible builds
file: '.gitlab/ci/pipeline-js-package.yml'
variables:
CACHE_KEY: "my-package-v1"
NPM_PACKAGE_NAME: "@myorg/my-package"Available templates:
.gitlab/ci/pipeline-js-package.yml— security → install → validate → quality → test → build → publish → release.gitlab/ci/pipeline-js-app.yml— JS quality + test jobs for Laravel full-stack apps
Development
make quality # full quality check
make test-all # vitest + bats
make bats # shell script tests only
make doctor # environment diagnosticsGetting Help
Made with ❤️ by Zairakai
