@mawhea/npm-package-starter
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

npm-package-starter

What is this?

A simple scaffolding tool for creating a new project to be published to npm.
It provides a build command that will compile your code to a CommonJS Node target, allowing named imports for CommonJS packages inside ESM files.
The package contains a simple "hello world" based on TypeScript, tested through Vitest and linted with ESLint, Prettier, Secretlint, Cspell, and CommitLint.
It also provides a Husky pre-commit hook to run some linting based on prettier and eslint and run tests, so you can simply git add and git commit without worrying about anything else.

Local development

Please make sure you have Node.js and pnpm installed.

Node.js

You can use either fnm or nvm to install the version of Node defined in the .nvmrc file.

PNPM

corepack enable

Note: If you already have pnpm installed via brew or npm i -g, you should remove those versions as they are not needed anymore. Corepack will handle installing the correct version for you.

Warning: If you get command not found when trying to run corepack, you probably didn't use fnm/nvm to install Node. The preferred fix is to use one of those tools to manage your installed Node versions. If you don't want to use them, you will need to install corepack manually.

  • npm install -g corepack

How To Install?

git clone git://github.com/mjwheatley/npm-package-starter.git package_name
cd npm-package-starter
pnpm install
npx husky install

What do you mean by allowing named imports from CommonJS?

If you try to run npm run build you will be able to import the sayHello function from the index.js file, both via require and import syntax.

Importing via require

const { sayHello } = require('my-package');

Importing via import

import { sayHello } from 'my-package';

Why did you build it?

I got tired of copying and pasting the same files over and over again.
This is a simple tool to create a new project with the basic files needed to publish to npm.

How can I personalize it?

You can change the package.json file to your liking, bringing your own package name and description.

  • Update package name
  • Update package description
  • Update repository.url
  • Update author
  • Update exports to represent your package's individual file exports

What's Inside?

  • Typescript
  • Vitest
  • Eslint
  • Prettier
  • Husky
  • Commitlint
  • Secretlint
  • Cspell
  • Semantic Release

How to push and release an update?

Merge or push changes to the main branch to trigger the semantic-release GitHub workflow.

If you are publishing to the public NPM registry, create an NPM_TOKEN secret in your GitHub repository with your NPM token.

Commitlint will enforce Conventional Commits so semantic-release can automatically version your package.

How to run tests?

pnpm test

Package Sidebar

Install

npm i @mawhea/npm-package-starter

Weekly Downloads

6

Version

1.0.3

License

MIT

Unpacked Size

11.9 kB

Total Files

23

Last publish

Collaborators

  • mwheatley