Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Build tools for js projects. Includes tsconfigs, templates and CI workflows

License

NotificationsYou must be signed in to change notification settings

paulmillr/jsbt

Repository files navigation

Build tools for js projects. Includes tsconfigs, templates and CI workflows

tsconfigs

There are two base strict tsconfig with a few interesting options:

  • isolatedDeclarations - ensures output is friendly to JSR.io
  • verbatimModuleSyntax - ensures files are friendly to "type erasure" / "type ignore"node.js and others.

GitHub CI workflows

Contains two workflows:

test-js.yml:

  1. Runs node.js tests on LTS versions
  2. Runs Bun tests (if test:bun exists)
  3. Runs Deno tests (TODO: do not run if no test:bun)
  4. Runs linter (if lint exists)
  5. Calculates code coverage from tests using c8

Options:submodules: true / false (default) - whether to clone repo with submodules.

release.yml:

  1. Publishes release on NPM
  2. Publishes release on JSR if jsr.json exists

Options:

  • build-path: string - path to build directory, which containsout dir, from whichfiles would be uploaded to github releases
  • slow-types: true / false (default) - whether to allow slow types on JSR.io. Check jsr docs

Usage

Copy all files fromrepo-template when creating a new project.Then, editEDIT_ME parts in copied files.

Libraries can have different structure. Edit it to your needs:

  • A library can be single-file (index.ts), or multiple-files (src directory)
  • A library can be ESM-only (one tsconfig), or hybrid ESM+Common.js (two tsconfigs)

Make sure to adjustpackage.json steps:lint,format,test,build andtsconfig

Structure

  • repo-template - files that should be copied when a new repo is created
    • .github - github ci workflows:
      • run npm tests on every commit
      • publish npm package on every release, using GitHub CI and provenance
      • upload standalone build files to github release, frombuild directory
    • .prettierrc.json,tsconfig.esm.json: prettier and typescript configs
    • LICENSE - MIT license
    • build - directory that usesesbuild to create a standalone build filethat can be used in browsers etc
  • tsconfig - typescript config files that can be loaded through NPM
    • @paulmillr/jsbt/tsconfig.esm.json - ESM base config
    • @paulmillr/jsbt/tsconfig.cjs.json - common.js base config
  • jsbt.js - binary, provides helpers forbuild directory,such as readingpackage.json and transforming its package name into snake-cased orcamelCased name. When installed through NPM, it can be used asnpx jsbt. For example, for package"@namespace/ab-cd", it would emit:
    • npx jsbt outfile -namespace-ab-cd
    • npx jsbt global -namespaceAbCd

Updates

  • When prettier, tsconfig, esbuild are updated, adjustrepo-template/package.json andrepo-template/build/package.json
  • When node.js LTS is updated, adjustrepo-template/.github/workflows/*.yml
  • When GitHub CI checkout action is updated, adjustrepo-template/.github/workflows/*.yml
    • contents withactions/checkout@ will need to be set to new values
    • ensure it's commit ids and not tags, because tags are mutable (less secure)

License

MIT License

About

Build tools for js projects. Includes tsconfigs, templates and CI workflows

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp