@libit/pkginfo
v0.4.2
Published
An easy way to find and read package json whether from a submodule or the application
Maintainers
Readme
@libit/pkginfo
An easy way to find and read package json whether from a submodule or the application
Installation
$ npm install @libit/pkginfoHighlights
- Using pkg-up to find package json file
- Read package json file through
fs.readFileinstead ofrequirefor this issue - Provide
appinfo()andappinfo.sync()function to get application json data directly - Throws more helpful JSON errors
- Normalizes the data
Motivation
How can a module get package data from an application's package.json?
import {pkginfo} from '@libit/pkginfo';
// get applicaiton json data using pkginfo
console.log(await pkginfo(require.main));
// await pkginfo(require.main);
// =>
// [{"name": "application", ...}, '.../resolved-directory']
// or simply using appfino
console.log(await appinfo());
// await appinfo(require.main);
// =>
// [{"name": "application", ...}, '.../resolved-directory']Usage
import {pkginfo} from '@libit/pkginfo';
console.log(await pkginfo());
// => [{name: '@libit/pkginfo', …}, '.../resolved-directory']
console.log(await pkginfo(require.main));
// => [{name: 'app', …}, '.../resolved-directory']
console.log(await pkginfo('some-other-directory'));
// => [{name: 'unicorn', …}, '.../resolved-directory']Here's a sample of the output:
[
'.../fixtures',
{
name: 'simple-app',
description: 'A test fixture for pkginfo',
version: '0.1.0',
keywords: ['test', 'fixture'],
main: './dist/index.js',
scripts: {test: 'mocha __tests__/**/*.test.js'},
engines: {node: '>= 12'},
},
];API
pkginfo(dirOrModule?: NodeModule | string, normalization?: boolean)
Returns a Promise<[PackageJson, string]> or Promise<[NormalizePackageJson, string]> for package data and package
file directory, or Promise<[null, null]> if couldn't be found.
pkginfo.sync(dirOrModule?: NodeModule | string, normalization?: boolean)
Returns a [PackageJson, string] or NormalizePackageJson, string for package data and package file directory, or
[null, null] if couldn't be found.
appinfo(normalization?: boolean) and appinfo.sync(normalization?: boolean)
appinfo() <=> pkginfo(require.main);
appinfo(false) <=> pkginfo(require.main, false);