1. pkg-types
Node.js utilities and TypeScript definitions for `package.json` and `tsconfig.json`
pkg-types
Package: pkg-types
Created by: unjs
Last modified: Thu, 18 Apr 2024 10:48:00 GMT
Version: 1.1.0
License: MIT
Downloads: 18,616,106
Repository: https://github.com/unjs/pkg-types

Install

npm install pkg-types
yarn add pkg-types

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 💛





RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin