Local Development

Install

Follow the authentication setup in Installation, then install dependencies:

npm install

To develop against a local checkout of the core library, link it after installation:

npm link ../core-library

Replace the example with the actual path. package.json keeps the published range "@bayudwiyansatria/core": "^1.2.1"; the link only changes node_modules. Running npm install replaces the symlink, so link it again afterward. Rebuild the linked library before testing changes here.

Commands

Command Purpose
npm run build Build both package entries into lib/
npm run dev Rebuild both entries on file changes
npm test Run lint, Markdown checks, and Jest
npm run test:run Run Jest with coverage under dist/coverage/
npm run lint:run Lint src/
npm run lint:fix Lint src/ and apply safe fixes
npm run format Format source and configuration files
npm run format:docs Format Markdown files
npm run format:docs:check Check Markdown formatting
npm run docs:check Check local Markdown links and anchors
npm run build:docs Generate TypeDoc output under dist/docs/
npm run build:docs:book Generate the HonKit book under dist/book/
npm run build:docs:coverage Run tests to generate the documentation site's coverage report
npm run build:static Assemble the landing page, API docs, book, and coverage
npm run build:all Build the package and all static documentation
npm run docker:build:docs Build the documentation site image
npm run docker:serve:docs Serve the documentation site at http://localhost/

Build

npm run build

The main entry produces lib/index.min.cjs, lib/index.min.mjs, and lib/index.d.ts. The middleware entry produces lib/middlewares.min.cjs, lib/middlewares.min.mjs, and lib/middlewares.d.ts. Source maps are written beside the JavaScript bundles. There is no UMD bundle or declaration source map. The generated lib/ directory is not committed.

Use npm run dev while iterating.

Test

npm run test:run

Jest runs every *.spec.ts under test/, collects coverage from src/**, and writes LCOV and HTML reports to dist/coverage/. The suite stops at the first failing test.

Run one file or matching test with:

npx jest --config jest.config.json test/core/bindings/Binding.spec.ts
npx jest --config jest.config.json -t 'rejects an empty name'

Tests use the same @/ path mapping as the source through moduleNameMapper in jest.config.json.

Lint and format

npm run lint
npm run format
npm run format:docs

ESLint uses the flat configuration in eslint.config.ts. It rejects unused variables and enforces the package's import boundaries. See Module responsibility for the layer rules.

Prettier owns formatting. The project uses no semicolons, single quotes, a 120-column width, and two-space indentation.

Type-check without building

npx tsc --noEmit

This is faster than a Rollup build when only type validation is needed.

Documentation

npm run format:docs:check
npm run docs:check
npm run build:docs
npm run build:docs:book

The TypeDoc build fails on undocumented exports and invalid API cross-references. The Markdown checker validates local file paths and heading anchors. See Documentation for authoring conventions.

Full static site

npm run build:static

This assembles the landing page, API reference, book, and coverage report in dist/. See Docker for serving the result locally.

results matching ""

    No results matching ""