astro-ghostcms/.pnpm-store/v3/files/76/095dfff3dd4d3e7d8ff2b48ff74...

142 lines
2.6 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
# pkg-types
> Node.js utilities and TypeScript definitions for `package.json` and `tsconfig.json`
```
\⍩⃝/
```
## Install
```sh
# npm
npm i pkg-types
# yarn
yarn add pkg-types
# pnpm
pnpm add pkg-types
```
## Usage
### `readPackageJSON`
```js
import { readPackageJSON } from 'pkg-types'
const localPackageJson = await readPackageJSON()
// or
const packageJson = await readPackageJSON('/fully/resolved/path/to/folder')
```
### `writePackageJSON`
```js
import { writePackageJSON } from 'pkg-types'
await writePackageJSON('path/to/package.json', pkg)
```
### `resolvePackageJSON`
```js
import { resolvePackageJSON } from 'pkg-types'
const filename = await resolvePackageJSON()
// or
const packageJson = await resolvePackageJSON('/fully/resolved/path/to/folder')
```
### `readTSConfig`
```js
import { readTSConfig } from 'pkg-types'
const tsconfig = await readTSConfig()
// or
const tsconfig = await readTSConfig('/fully/resolved/path/to/folder')
```
### `writeTSConfig`
```js
import { writeTSConfig } from 'pkg-types'
await writeTSConfig('path/to/tsconfig.json', tsconfig)
```
### `resolveTSConfig`
```js
import { resolveTSConfig } from 'pkg-types'
const filename = await resolveTSConfig()
// or
const tsconfig = await resolveTSConfig('/fully/resolved/path/to/folder')
```
### `resolveFile`
```js
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.
```js
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.
```js
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:
```ts
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.
```js
import type { definePackageJSON } from 'pkg-types'
const pkg = definePackageJSON({})
```
```js
import type { defineTSConfig } from 'pkg-types'
const pkg = defineTSConfig({})
```
## Alternatives
- [dominikg/tsconfck](https://github.com/dominikg/tsconfck)
## License
MIT - Made with 💛