Skip to content

Extracting and parsing data for project production works on a root directory with submodule/monorepo

License

Notifications You must be signed in to change notification settings

jalal246/get-info

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

get-info

Utility functions extract project(s) Json by providing> project root path or package names.

get-info Works with monorepos ./packages/**/ as well as for a single package project ./myFiles.

npm install get-info

API

getJsonByName

Extracts package json, and resolved path for each project name. If names are not passed, it returns all json objects can be found in ./packages/**/package.json or ./package json

getJsonByName(...packNames?string)

The result object:

  • json: Array <packJson> - Contains objects of all retrieved package.json based on given names
  • pkgInfo: Array <packPath> - Contains objects of package paths based on package name
const { json, pkgInfo } = getJsonByName(...names);

Example(1)

import { getJsonByName } from "get-info";

// workspace
// │
// ├───foo
// │   ├───src
// │   └───package.json
// ├───bar
// │   ├───src
// │   └───package.json
// ├───foobar
// │   ├───src
// │

const { json, pkgInfo } = getJsonByName("foo", "bar");

// json = [
//   { name: "foo", version: "1.0.0", main: "index.js" },
//   { name: "bar", version: "2.1.1", main: "bundle.js" },
// ];

// pkgInfo = {
//   foo: { path: "path/to/foo" },
//   bar: { path: "path/to/bar" },
// };

What if passed invalid name? It returns empty array []

Example(2)

// workspace
// │
// ├───foo
// │   ├───src
// │   └───package.json
// ├───bar
// │   ├───src
// │   └───package.json
// ├───foobar
// │   ├───src
// │

const { json, pkgInfo } = getJsonByName("baz");

// json =[]

if (json.length === 0) console.log("do something");

getJsonByPath

Extracts package json, and its associated resolved path. If paths are not passed, it returns all json objects can be found in ./packages/**/package.json or ./package.json

getJsonByPath(...paths?string)

The result object:

  • json: Array <packJson> - Contains objects of all retrieved package.json based on given paths
  • pkgInfo: Array <packPath> - Contains objects of package paths based on package path
  • unfoundJson: Array <string> - List of paths don't have valid package.json
const { json, pkgInfo, unfoundJson } = getJsonByPath(...paths);

Example(3)

import { getJsonByPath } from "get-info";

// workspace
// │
// ├───foo
// │   ├───src
// │   └───package.json
// ├───bar
// │   ├───src
// │   └───package.json
// ├───foobar
// │   ├───src
// │

const { json, pkgInfo, unfoundJson } = getJsonByPath(
  `${__dirname}/foo`,
  `${__dirname}/bar`
);

// json = [
//   { name: "foo", version: "1.0.0", main: "index.js" },
//   { name: "bar", version: "2.1.1", main: "bundle.js" },
// ];

// pkgInfo = {
//   foo: { path: "path/to/foo" },
//   bar: { path: "path/to/bar" },
// };

// unfoundJson = ["path/to/foobar"];

By default, getJsonByPath returns all package in workspace tree.

// workspace
// │
// ├───foo
// │   ├───src
// │   └───package.json
// ├───bar
// │   ├───src
// │   └───package.json
// ├───foobar
// │   └───src
// │
// │───package.json

const { json, pkgInfo, unfoundJson } = getJsonByPath();

// json = [
//   { name: "foo", version: "1.0.0", main: "index.js" },
//   { name: "bar", version: "2.1.1", main: "bundle.js" },
// ];

// pkgInfo = {
//   foo: { path: "path/to/foo" },
//   bar: { path: "path/to/bar" },
// };

// unfoundJson = ["path/to/foobar"];

Tests

npm test

License

This project is licensed under the GPL-3.0 License

Related projects