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

@hiddenability/opinionated-defaults-linux-x64

v0.1.34

Published

Opinionated default configurations for webdev tools.

Downloads

113

Readme

Banner

Demo

A collection of opinionated web-dev tooling configurations.

GitHub Tag NPM Downloads GitHub License GitHub Actions Workflow Status

Bun TypeScript Rust

Quickstart

[!NOTE] The package manager that the CLI will use to install this package is dependent on what lockfile you have in the root of your project (i.e., having bun.lock will use bun, while having package-lock.json will use npm).

Currently, the only supported package managers are bun and npm.

This package contains a CLI that can be used to generate both eslint.config.ts and prettier.config.mjs files.

You can use it by running one of the following commands.

bunx @hiddenability/opinionated-defaults
npx @hiddenability/opinionated-defaults

Supported Framework Configurations:

Eslint:

  • Astro
  • Elysia.js
  • Next.js

Exports:

  • eslintConfig (Used to provide autocomplete)
  • eslintConfigAstro (Astro)
  • eslintConfigBase (General rules for every project)
  • eslintConfigElysia (Elysia.js)
  • eslintConfigFunctional (Enforces functional style)
  • eslintConfigNext (Next.js)
  • eslintConfigOxlint (Disables ESlint rules available in Oxlint)
  • eslintConfigPrettier (Runs Prettier as ESLint rules)
  • eslintConfigReact (General rules for React)
  • eslintConfigRelative (Enforces the use of absolute import paths using path aliases)
  • eslintConfigStylistic (Enforces code-style through ESLint rules)
  • eslintConfigTurbo (Turborepo)

Included plugins:

Prettier:

  • Astro
  • Next.js
  • +Opinionated defaults

Exports:

  • prettierConfig (Used to merge configurations and provide autocomplete)
  • prettierConfigAstro (Astro prettier rules with Tailwind class ordering)
  • prettierConfigNext (Rules for Next.js with Tailwind class ordering)
  • prettierConfigBase (General rules for every project)
  • prettierConfigSortImports (Prettier-based import sorting)

Included plugins:

Manual Installation:

Alternatively, you can install it manually by running one of the following commands.

bun add @hiddenability/opinionated-defaults -d
npm i @hiddenability/opinionated-defaults -D

Usage:

Eslint:

// eslint.config.ts
import {
  eslintConfig,
  eslintConfigBase,
} from '@hiddenability/opinionated-defaults/eslint';

export default eslintConfig([
  ...eslintConfigBase,
  // ...eslintConfigPrettier, // other configs fit right in!
  // { /* your rules here */ },
]);

Prettier:

// prettier.config.mjs
import {
  prettierConfig,
  prettierConfigBase,
} from '@hiddenability/opinionated-defaults/prettier';

export default prettierConfig(prettierConfigBase);

Extending/Combining Prettier Configs:

Since Prettier uses a configuration object instead of a flat config like ESLint, to extend or combine configurations, the prettierConfig function will merge configs for you.

// prettier.config.mjs
import {
  prettierConfig,
  prettierConfig1,
  prettierConfig2,
} from '@hiddenability/opinionated-defaults/prettier';

export default prettierConfig(
  prettierConfig1,
  prettierConfig2,
  {
    /* your custom rules */
  },
  /*...*/
);

TailwindCSS Plugin:

When using prettier-config-tailwind, make sure to specify the CSS file that contains the @import "tailwindcss" directive.

For example, given the following css file:

/* /app/styles.css */
@import 'tailwindcss';

This should be a minimal version of your Prettier config:

// prettier.config.mjs
import {
  prettierConfig,
  prettierConfigBase,
  prettierConfigTailwind,
} from '@hiddenability/opinionated-defaults/prettier';

export default prettierConfig(prettierConfigBase, prettierConfigTailwind, {
  tailwindStylesheet: `./app/styles.css`,
});

TODO:

  • Improve repository structure (How to manage configuration options within eslint dir?).
  • Maybe convert into monorepo with one package per tool instead of multiple exports from one package.
  • Prevent importing overlapping configurations (i.e., Next.js ESLint config contains base config).
  • Support node module resolution.
  • Maybe make declarative configurations instead of just providing wrapped config modules.