You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Marek Piasecki
06fbe82dce
|
2 years ago | |
---|---|---|
.. | ||
dist | 2 years ago | |
node_modules/pathe | 2 years ago | |
LICENSE | 2 years ago | |
README.md | 2 years ago | |
package.json | 2 years ago |
README.md
pkg-types
Node.js utilities and TypeScript definitions for
package.json
andtsconfig.json
\⍩⃝/
Install
# npm
npm i pkg-types
# yarn
yarn add pkg-types
Usage
readPackageJSON
import { readPackageJSON } from 'pkg-types'
const pkg = await readPackageJSON('path/to/package.json')
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')
readPackageJSON
import { readPackageJSON } from 'pkg-types'
const filename = await readPackageJSON()
// or
const packageJson = await readPackageJSON('/fully/resolved/path/to/folder')
readTSConfig
import { readTSConfig } from 'pkg-types'
const pkg = await readTSConfig('path/to/tsconfig.json')
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')
readTSConfig
import { readTSConfig } from 'pkg-types'
const filename = await readTSConfig()
// or
const tsconfig = await readTSConfig('/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:
- Nearest
.git
directory - Farthest lockfile
- 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
MIT - Made with 💛