Time slots app prototype
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 npx imba create (Vite) 2 years ago
..
dist npx imba create (Vite) 2 years ago
node_modules/pathe npx imba create (Vite) 2 years ago
LICENSE npx imba create (Vite) 2 years ago
README.md npx imba create (Vite) 2 years ago
package.json npx imba create (Vite) 2 years ago

README.md

pkg-types

Node.js utilities and TypeScript definitions for package.json and tsconfig.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:

  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

MIT - Made with 💛