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 🙏

© 2025 – Pkg Stats / Ryan Hefner

blink-ui-kit

v1.0.0

Published

Blink Component Library

Readme

Steps to use it as your project

clone the repository.

open package.json and change all the property you need to change:

  • name
  • description
  • author
  • license
  • repository
  • other you want to change

run npx semantic-release-cli setup to configure your CI pipeline.

Obviously npm i

Hooks and CI

CI runs for branch master and develop

Git-Hooks: pre-push on master execute npm run build && npm run build-storybook, on develop execute npm run build

CI

Add semantic-release to manage versioning and publish on npm. npx semantic-release-cli setup CI is done with GithubAction, so when semantic-release ask what CI env, choose other. It gives you 2 tokens (GH_TOKENS and NPM_TOKENS) that need to be added as secret in github repo.

Semantic-release work with body of commit: look here for how to use it.

Or look in official conventional commits

Eslint & Prettier

Eslint from here, I just use npx eslint --init

Integrate Eslint with Prettier from here.

Now everytime I run eslint (eg npx eslint --fix src) prettier runs to fixing simple format errors.

EDIT: I don't need prettier at all, it usually conflicts with eslint config leading to indentations problems etc.

EDIT:EDIT: I need both, they are similar but achieve different goals.

StoryBook

I've mantain the same project structure from npx -p @storybook/cli sb init --type react.

I've add a webpack.config for use sass official doc

Gived Up

Probably what I'm trying to do is bad execute. The fact that I use JavaScript for developing and TypeScript for type definitions is a huge pain, mostly because I don't know how to integrate Storybook with that kind of project setup. That said a lot of library do this double work, keeping js only for developement and ts for exposing types to Typescript and IDEs. stackoverflow small disussion about this kind of problem Also is worth mentioning that strip off proptypes leave any JS project that use the library unable to type check which is sad.

Thing Discovered Step by Step:

  • in package.json the field files let you specify what files/folder to publish stackoverflow
  • in package.json the field main let you specify where your file with all the exports is. Default to index.js at root level offical doc
  • browserslist is used by many tools (among them @babel/preset-env) to polyfill target browsers. Can be declared as file or directly in package.json. I copied the browserlist of default CRA. About different enviroment
  • *.d.ts files are equivalent to header file (*.h) in C, as far as I understand they aren't mandatory but they're useful. They match exactly like .h files in C, so <FileName>.js needs <FileName>.d.ts.
  • Inspired by react-bootstrap use a node script to build the library
  • One problem I found is duplication between PropTypes and *.d.ts, they almost do the same thing: the first check types at runtime, the other at compile time. PropTypes should not be present in the library once published (don't know why but anyone does this way), so they're useful just for developement. Since I don't find anything (that really convice me) for generate .d.ts from PropTypes or viceversa, I stick with just *.d.ts and no PropTypes. This way you can use this library in a TypeScript project with checking, in a JavaScript project you don't get the checking but at least the suggestions from your IDE.
  • I'm starting to notice the same problem as before, I'm duplicating my imports between index.js and index.d.ts and when exported as library only the *.d.ts are used. I suspect I need them for developing (with Storybook) EDIT: YES I NEED IT FOR DEV.

Dev Dependency

Building