
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@kjanat/prettier-config
Advanced tools
Shareable Prettier configuration with plugin support.
# Bun
bun add -d @kjanat/prettier-config prettier
bun pm pkg set prettier="@kjanat/prettier-config"
Other package managers# npm
npm install --save-dev @kjanat/prettier-config prettier
npm pkg set prettier="@kjanat/prettier-config"
# pnpm
pnpm add --save-dev @kjanat/prettier-config prettier
pnpm config set --location=prettier "@kjanat/prettier-config"
# yarn
yarn add @kjanat/prettier-config prettier --dev
yarn config set prettier "@kjanat/prettier-config"
Add to package.json:
{ "prettier": "@kjanat/prettier-config" }
Or create .prettierrc:
"@kjanat/prettier-config"
Create prettier.config.mjs:
import prettierConfig from "@kjanat/prettier-config";
/** @satisfies {Config} */
export default { ...prettierConfig, semi: false, printWidth: 100 };
Or with TypeScript (prettier.config.ts):
import type { Config } from "prettier";
import prettierConfig from "@kjanat/prettier-config";
export default { ...prettierConfig, semi: false } satisfies Config;
CSS, HTML, XML use tabsSVG uses HTML parser for better whitespace handlingMarkdown wraps at printWidthXML:
{
objectWrap: "preserve",
experimentalTernaries: true,
overrides: [
// CSS, HTML, XML use tabs
{ files: ["*.css"], options: { useTabs: true } },
{ files: ["*.html"], options: { useTabs: true } },
// SVG uses HTML parser for better whitespace handling
{
files: ["*.svg"],
options: {
parser: "html",
useTabs: true,
htmlWhitespaceSensitivity:"ignore",
}
},
// Markdown wraps at printWidth
{ files: ["*.md"], options: { proseWrap: "always" } },
// XML formatting
{
files: ["*.xml"],
options: {
parser: "xml",
useTabs: true,
singleAttributePerLine: true,
xmlSortAttributesByKey: true
}
}
]
}
Notable:
printWidth (override with proseWrap: "preserve" if needed)Configure custom utility functions:
import type { PluginOptions } from "prettier-plugin-tailwindcss";
import prettierConfig from "@kjanat/prettier-config";
/**
* @satisfies {PluginOptions}
* @see https://github.com/tailwindlabs/prettier-plugin-tailwindcss
*/
const tailwindOptions = {
tailwindFunctions: ["cn", "clsx", "tw"],
};
/** @satisfies {Config} */
export default {
...prettierConfig,
...tailwindOptions
};
| Environment | Version | Support |
|---|---|---|
| Bun | ≥1.0.0 | ✅ |
| Node.js | ≥18.0.0 | ✅ |
Module System: ESM only
bun run build # Build package
bun typecheck # Type checking
bun run format # Format code
Plugins are peer dependencies. Install required plugins:
bun add -d @prettier/plugin-xml prettier-plugin-tailwindcss
This package is ESM-only (no CommonJS build).
"type": "module" to package.jsonrequire() won't work; use a dynamic import() in your config, e.g.
module.exports = import("@kjanat/prettier-config").then((m) => ({ ...m.default }))moduleResolution to "bundler" or "node16"Contributions welcome! Submit a PR:
MIT © kjanat
FAQs
Yet another Prettier config
The npm package @kjanat/prettier-config receives a total of 11 weekly downloads. As such, @kjanat/prettier-config popularity was classified as not popular.
We found that @kjanat/prettier-config demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.