Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ pkg-types Public
forked from unjs/pkg-types

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

License

Notifications You must be signed in to change notification settings

sxzz/pkg-types

 
 

Repository files navigation

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 💛

About

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

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages

  • TypeScript 99.5%
  • JavaScript 0.5%