1.1.0 • Published 21 days ago

pkg-types v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
21 days ago

pkg-types

npm version npm downloads codecov

Node.js utilities and TypeScript definitions for package.json and tsconfig.json.

Install

# ✨ Auto-detect
npx nypm install pkg-types

# npm
npm install pkg-types

# yarn
yarn add pkg-types

# pnpm
pnpm install pkg-types

# bun
bun install pkg-types

Usage

readPackageJSON

import { readPackageJSON } from "pkg-types";
const localPackageJson = await readPackageJSON();
// or
const packageJson = await readPackageJSON("/fully/resolved/path/to/folder");

writePackageJSON

import { writePackageJSON } from "pkg-types";

await writePackageJSON("path/to/package.json", pkg);

resolvePackageJSON

import { resolvePackageJSON } from "pkg-types";
const filename = await resolvePackageJSON();
// or
const packageJson = await resolvePackageJSON("/fully/resolved/path/to/folder");

readTSConfig

import { readTSConfig } from "pkg-types";
const tsconfig = await readTSConfig();
// or
const tsconfig2 = await readTSConfig("/fully/resolved/path/to/folder");

writeTSConfig

import { writeTSConfig } from "pkg-types";

await writeTSConfig("path/to/tsconfig.json", tsconfig);

resolveTSConfig

import { resolveTSConfig } from "pkg-types";
const filename = await resolveTSConfig();
// or
const tsconfig = await resolveTSConfig("/fully/resolved/path/to/folder");

resolveFile

import { resolveFile } from "pkg-types";
const filename = await resolveFile("README.md", {
  startingFrom: id,
  rootPattern: /^node_modules$/,
  matcher: (filename) => filename.endsWith(".md"),
});

resolveLockFile

Find path to the lock file (yarn.lock, package-lock.json, pnpm-lock.yaml, npm-shrinkwrap.json) or throws an error.

import { resolveLockFile } from "pkg-types";
const lockfile = await resolveLockFile(".");

findWorkspaceDir

Try to detect workspace dir by in order:

  1. Nearest .git directory
  2. Farthest lockfile
  3. Farthest package.json file

If fails, throws an error.

import { findWorkspaceDir } from "pkg-types";
const workspaceDir = await findWorkspaceDir(".");

Types

Note: In order to make types working, you need to install typescript as a devDependency.

You can directly use typed interfaces:

import type { TSConfig, PackageJSON } from "pkg-types";

You can also use define utils for type support for using in plain .js files and auto-complete in IDE.

import type { definePackageJSON } from 'pkg-types'

const pkg = definePackageJSON({})
import type { defineTSConfig } from 'pkg-types'

const pkg = defineTSConfig({})

Alternatives

License

Published under the MIT license. Made by @pi0, @danielroe and community 💛

@danifoldi/nitropack@infinitebrahmanuniverse/nolb-pk@nyxb/changelog@paescuj/unbuildnuxt3@everything-registry/sub-chunk-2443@wxqaq/build-node-modules@ucstu/vue3-pixi-nuxt@neodx/vite-plugin-library@gcko/unmacros@genesislcap/build-kit@genesislcap/buildkit@jannchie/changelogen@jetlinks-web/lint@kovsu/nc@kazupon/rolldown-cli@kazura/node-util@mfauzanap_pandacss/node@mikebellika/nitropack@mjsz-vbr-elements/nuxt@growing-web/wpm@growing-web/esm-pack-core@growing-web/esmpack-builder@growing-web/web-builder-kit@genesislcap/ts-builder@gjsify/cli@hebilicious/nitro@hebilicious/unstable-nitro@hixt/kit@hixt/nitro@lordbeanbag/vite-plugin-svg-icons-monorepo@neon.id/sql@neon.id/worker@neodx/vfs@fastkit/plugboy@funish/bump@funish/cli@funish/githooks@fridayjs/inspect@pake/nuxt-ionic@pact-toolbox/fabricator@pact-toolbox/init@pandacss/node@philippdormann/changelogen@organisme/cli@organisme/sql@organisme/worker@tahul/unbuildanakketigaanaklanangteaanakwadontea@aabelmann/ui-layer@2digits/cliautomd@aidenvigue/tresjs-nuxt@0x1461a0/sd-plugin-scripts@zzhaon/create-electron-appyaslayajuu@uictoria1/fsmanima-storybook-clizona-xvue3-pixi-nuxt@wattanx/page-meta@ti-platform/aide-build-toolszzzxxxyyy321123@noyau/schema@eki-group/svelvet@one_octopus/andy@oku-ui/primitives-nuxt@remix-kit/cli@remix-kit/schema@remix-kit/vite@readue/block-env_requirement@readue/block-packages@readue/block-star_history@readue/block-techstack@rigo-m/nitropack@robbe95/webcomponents-test@pi0/c12@phojie/changegear@pinceau/unbuild@pkg-tools/create-pkg@pospal/node-tools@ppgjs/cli@pubinfo/changelog@so1ve/nitropack@storm-software/workspace-tools@shushu.pro/webpack@nuxtjs/ionic@nuxtjs/seo@nuxtjs/sitemap@nuxt/bridge@nuxt/bridge-edge@nuxt/bridge-schema@nuxt/bridge-schema-edge@nuxt/schema-edge@nuxt/schema-nightly@nuxt/scripts@nuxt/ui-pro
1.1.0

21 days ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.0

3 years ago

0.2.3

3 years ago

0.3.1

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.5

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago