npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@mawhea/npm-package-starter

v1.0.3

Published

A scaffolding for npm packages written in TypeScript

Downloads

8

Readme

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