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

import-sort-style-wes

v3.0.2

Published

Wes' personal import-sort style

Downloads

1,399

Readme

import-sort-style-wes

Wes' personal style for import-sort.

Sorting Example

// Modules without members
import '@scoped/module';
import 'first-module';
import 'second-module';
import '~/local-module';

// Installed and scoped modules
import scoped from '@scoped/thing';
import whatever from 'module-a';
import anything from 'module-b';

// Local resolved modules
import exported from '~/project-root-file';

// Siblings and parents
import things from '../grand-parent';
import name from '../parent';
import sibling from './sibling';

Why ~?

Not all characters can be used at a module path, because of npm registry rules, and file system constraints. npm already uses the @ prefix to scope organizations and teams.

Inspired by Parcel, which resolves ~ to the project source directory by default, I decided to define ~ as the de facto reference for all of my packages root source directories.

Some projects prefer to have every folder on the project source as its own resolve alias. I find this bad especially for use cases like this, where one would need to read the file system to determine if an import is within node_modules or the project's source folder. Given that these can be configured in a multitude of ways, I decided to not support that at all.

Usage

These instrutions use prettier, which is my preferred method of enforcing import sort order.

# Install prettier-plugin-import-sort
yarn add -D prettier-plugin-import-sort

# Install import-sort-style-wes
yarn add -D import-sort-style-wes

Then add on your root package.json:

{
  "importSort": {
    ".js, .jsx": {
      "parser": "babylon",
      "style": "wes"
    },
    ".ts, .tsx": {
      "parser": "typescript",
      "style": "wes"
    }
  }
}

Development

I've used yarn, and tsdx, which provides scaffolding for TypeScript libraries.

# Install yarn, if you don't have it
curl -o- -L https://yarnpkg.com/install.sh | bash

# Install dependencies
yarn install

# Build upon changes (development mode)
yarn run dev

# Lint code
yarn run lint

# Test code
yarn run test

# Build code
yarn run build

License

MIT, https://wes.dev/LICENSE.txt