2.1.0 • Published 3 months ago

pkg-types v2.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 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-checker@dmzj/utils@docus/base-edge@cristianps1988/ds-template@ctsx/webpack@css-panda/node@dachico/timescript@pospal/node-toolsgdce-shadcn-cliip-designkdimportkysely-ctlla-nuxt-i18n@farnabaz/coremts-ui-pro@ourongxing/nitro@ourongxing/nitropackzzzxxxyyy321123tehmusimhujantiny-tinify-compresstldrawlignintrigger.devunjs-docsunjs-docs-nightly@aidenvigue/tresjs-nuxt@aplus-frontend/vite-config-preset@anyions/node-pkg@animaapp/anima-cli@atinux/nitro-cloudflare-dev@atinux/nuxthub@ayingott/venti@beesbuild/utils@axxy/nuxt@blakvghost/ui-pro@celeris/admin@2digits/cli@0x1461a0/sd-plugin-scripts@aabelmann/ui-layer@codingdud/coolicons@born3am/eslint-config@dcp2/toolkit-config-vite@danizean/cyberzoneyajuuyaslazona-xvue-router-demivue3-pixi-nuxtundocsundocs-nightlyunimportunbuildtsdowntsconfig-checkerunplugin-unusedunwasm@dword-design/nuxt-i18n@dword-design/nuxt-kit@dword-design/nuxt-vite-builder@dtwo/kit@dtwo/kit-edge@dtwo/schema@dtwo/schema-edge@dtwo/wite-builder@dtwo/wite-builder-edge@growing-web/wpm@growing-web/esm-pack-core@growing-web/esmpack-builder@growing-web/web-builder-kit@hebilicious/nitro@hebilicious/unstable-nitro@hixt/kit@hixt/nitro@igorjacauna/push-release@igorjacauna/sync-version@fastkit/plugboy@eki-group/svelvet@gabortorma/mwm@gcko/unmacros@fridayjs/inspect@funish/bump@funish/cli@funish/githooks
1.3.1

4 months ago

1.3.0

5 months ago

2.1.0

3 months ago

2.0.1

3 months ago

2.0.0

3 months ago

1.2.1

8 months ago

1.2.0

9 months ago

1.1.3

11 months ago

1.1.2

11 months ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.3

2 years ago

1.0.2

2 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

3 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