@lzear/forge
v4.2.2
Published
Umbrella package for all lzear dev tooling
Downloads
619
Readme
@lzear/forge
Umbrella package for lzear dev tooling. One dependency gives you ESLint config, shared build configs, commitlint config, repo compliance checks, and the forge CLI.
Install
npm install -D @lzear/forge
# or
yarn add -D @lzear/forgeRequires Node ≥ 20.
CLI
yarn forge check # audit this repo against forge standards
yarn forge setup # check and set required GitHub secrets
yarn forge sync # pull shared files from forge into this repoforge check
Audits the current repo (or a list of remote repos) against forge standards: README, badges, license, CI workflow, package hygiene (publint, attw, knip), and up-to-date dependencies.
forge check # current repo
forge check --repos lzear/votes # remote repo (clones via gh)
forge check --repos lzear/a,lzear/b # multiple repos
forge check --json # machine-readable output
forge check --skip-remote # skip GitHub secret checksforge setup
Checks and sets the required GitHub secrets (NPM_TOKEN, CODACY_PROJECT_TOKEN) for a repo.
forge setup # auto-detects repo from git remote
forge setup --repo lzear/my-repo
forge setup --dry # check only, do not promptforge sync
Fetches shared template files from the forge main branch and writes them locally.
forge sync # write .editorconfig, .codacy.yml, lefthook.yml
forge sync --dry # preview without writingESLint config
// eslint.config.ts
import lzearConfig from '@lzear/forge/eslint'
export default await lzearConfig()See @lzear/eslint-config for full options and extension examples.
tsconfig
{
"extends": "@lzear/forge/tsconfig/lib"
}Presets: lib, app, react.
tsup
// tsup.config.ts
import { defineLibConfig } from '@lzear/forge/tsup'
export default defineLibConfig({ index: 'src/index.ts' })vitest
// vitest.config.ts
import config from '@lzear/forge/vitest'
export default configFor React: @lzear/forge/vitest/react.
vite
// vite.config.ts
import config from '@lzear/forge/vite'
export default configcommitlint
// commitlint.config.ts
import config from '@lzear/forge/commitlint'
export default configEnforces Conventional Commits with header-max-length of 100. Pair with lefthook.yml (via forge sync) to run on every commit.
Require every commit to start with an emoji:
import emoji from '@lzear/forge/commitlint/emoji'
export default emojiCombine both:
import base from '@lzear/forge/commitlint'
import emoji from '@lzear/forge/commitlint/emoji'
export default {
...base,
plugins: [...(base.plugins ?? []), ...(emoji.plugins ?? [])],
rules: { ...base.rules, ...emoji.rules },
}Repo compliance
Programmatic access to the checks run by forge check:
import { checkLocal, checkRepo } from '@lzear/forge/repo-lint'
const report = await checkLocal()
console.log(report.results)