Skip to content

A modern JavaScript|Typescript library scaffolding, modularity, purity & extras

License

Notifications You must be signed in to change notification settings

yanhaijing/jslib-base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f585d38 · May 1, 2024
May 1, 2024
Sep 18, 2023
Sep 23, 2023
May 1, 2024
Sep 23, 2023
Sep 18, 2023
Sep 18, 2023
May 1, 2024
Sep 18, 2023
Sep 23, 2023
Sep 18, 2023
May 1, 2024
May 1, 2024
Jan 1, 2025
May 1, 2024
May 1, 2024
May 1, 2024
May 1, 2024
May 1, 2024
Jan 1, 2025
Nov 23, 2023

Repository files navigation

license npm NPM downloads Percentage of issues still open example workflow

English | 简体中文

The best JS|TS third-party library scaffold, quickly setup the basic framework of a JS|TS library in 10 seconds.

Libraries based on jslib-base can be shared on the jsmini platform.

⭐ Features

  • Interactive CLI for project initialization
  • Upgrade functionality – Easily upgrade old libraries with one command
  • Supports both JavaScript and TypeScript
  • Build & Packaging Solutions
    • TypeScript + Babel + Rollup
    • Automatic third-party dependency injection (supports tree shaking)
  • Multi-Environment Compatibility
    • Supports native browser script usage
    • Provides UMD and ESM modules, compatible with Webpack, Vite, and other ecosystems
    • Adapts to both old and new Node.js module systems (CommonJS + ESM)
  • Code Style & Linting
    • ESLint + Prettier + Husky + Lint-Staged
  • Unit Testing Suite
    • Mocha + Expect.js + Istanbul + NYC + Coveralls
  • Commit Linting
    • Commitlint + Commitizen
  • GitHub Actions
    • CI + Release
  • Local Development Server
    • http-server

🚀 User Guide

To create a new project, it is recommended to use Node.js version 18 or higher.

$ npx @js-lib/cli new mylib
# Interactive queries, input project info
$ cd mylib
$ npm i

To update the project, just execute the following command in the project root directory.

$ npx @js-lib/cli update

For old projects, you can't directly execute the update command, you can first initialize a config file.

$ npx @js-lib/cli new -c

Directory Overview

.
├── demo Usage demo
├── dist Compiled out code
├── doc Project documents
├── src Source code directory
├── test Unit tests
├── CHANGELOG.md Change log
└── TODO.md To-do features

Common command scripts

$ npm run lint
$ npm run test
$ npm run build
$ npm run release
$ npm publish

Contribution Guide

If you only want to modify the library code generated by the CLI, you can directly edit the template code, which is simpler.

After merging, I will migrate the template to the CLI. The template repository is as follows:

This project uses lerna to manage multiple plugins, common lerna commands are:

$ npx lerna init # Initialization
$ npx lerna create @js-lib/todo # Create a package
$ npx lerna add yargs --scope=@js-lib/cli # Install dependencies for a package
$ npx lerna list # List all the packages
$ npx lerna bootstrap # Install all dependencies
$ npx lerna link # Create all links
$ npx lerna changed # List the packages to be updated in the next release
$ npx lerna publish # Release with tag, upload to git, upload to npm

Contributors

contributors

Change Log

CHANGELOG.md

TODO

TODO.md

Current Users