2.1.0 • Published 8 months ago

pkg-types v2.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months 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

# deno
deno 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, bun.lockb, bun.lock) or throws an error.

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

findWorkspaceDir

Try to detect workspace dir by in order:

  1. Farthest workspace file (pnpm-workspace.yaml, lerna.json, turbo.json, rush.json)
  2. Closest .git/config file
  3. Farthest lockfile
  4. Farthest package.json file

If fails, throws an error.

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

resolveGitConfig

Finds closest .git/config file.

import { resolveGitConfig } from "pkg-types";

const gitConfig = await resolveGitConfig(".")

readGitConfig

Finds and reads closest .git/config file into a JS object.

import { resolveGitConfig } from "pkg-types";

const gitConfigObj = await readGitConfig(".")

writeGitConfig

Stringifies git config object into INI text format and writes it to a file.

import { writeGitConfig } from "pkg-types";

await writeGitConfig(".git/config", gitConfigObj)

parseGitConfig

Parses a git config file in INI text format into a JavaScript object.

import { parseGitConfig } from "pkg-types";

const gitConfigObj = parseGitConfig(gitConfigINI)

stringifyGitConfig

Stringifies a git config object into a git config file INI text format.

import { parseGitConfig } from "pkg-types";

const gitConfigINI = stringifyGitConfig(gitConfigObj)

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, GitConfig } 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({})
import type { defineGitConfig } from 'pkg-types'

const gitConfig = defineGitConfig({})

Alternatives

License

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

@danifoldi/nitropack@infinitebrahmanuniverse/nolb-pk@nyxb/changelog@paescuj/unbuild@everything-registry/sub-chunk-2443@wxqaq/build-node-modules@ucstu/vue3-pixi-nuxtcreate-cea-app@zzhaon/create-electron-apptaskherosvelvet-customwith-defer-esvue-global-eventsvxrnvulxitechorstorybook-nuxttian-configvite-config-checkergdce-shadcn-cliip-designkdimportkysely-ctlla-nuxt-i18nhuntersofbookgraphi-toolboxgua-ui-proholepackholepack-edgegvf3n4ygn-testgummy-cliinternetarchive-sdk-jslibrary-nuxt-uimakyomanutopiknuxt-content-v3mangudinlagirajinloading-animatedlocal-pkgkomekkoreact-vite-magic-import@wallywallfar/devtools@wattanx/page-meta@whitekite/after-build@web-build/web-builder-kit@vue-macros/cli@wtto00/uniapp-cli@wuxh/pkg-pr-new@ti-platform/aide-build-tools@tomw2w/my-nuxt-layer@trickd/build-node-modules@tresjs/nuxt@trigger.dev/build@vixt/core@vrx-arco/gen-theme@vrx-volar/tsc@vrx-cp/docgen@vrx-cp/utils@vortex.so/cli@xcode-ui/node-utils@yzbuild/utilsanakketigaanaklanangteaanakwadonteaabbas-ahlan-rouletteantd-form-flexibleanima-storybook-cliapibara@ayingott/venti@0x1461a0/sd-plugin-scripts@growing-web/web-builder-kit@growing-web/wpm@growing-web/esm-pack-core@growing-web/esmpack-builder@aabelmann/ui-layer@2digits/cli@0xclearview/svelte-tiny-virtual-table@axxy/nitropack@axxy/nuxt@atinux/nitro-cloudflare-dev@atinux/nuxthub@hahahoarder/strawberry-ui@aidenvigue/tresjs-nuxt@cmtlyt/tee@cn-admin/node-utils@codingdud/coolicons@cristianps1988/ds-template@haunytb/ui-pro@farnabaz/coremts-ui-pro@ourongxing/nitro@ourongxing/nitropackzzzxxxyyy321123tehmusimhujantiny-tinify-compresstldrawlignintrigger.devunjs-docsunjs-docs-nightly@beesbuild/utils@blakvghost/ui-pro
1.3.1

9 months ago

1.3.0

10 months ago

2.1.0

8 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

2 years ago

1.0.3

2 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.3.6

3 years ago

0.3.5

3 years ago

0.3.4

3 years ago

0.3.3

3 years ago

0.3.2

4 years ago

0.3.0

4 years ago

0.2.3

4 years ago

0.3.1

4 years ago

0.2.2

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago