@goldenbrick/package-build-order
v0.2.5
Published
Determines the dependency order in which to build npm packages.
Downloads
4
Readme
package-build-order
Determines the dependency order in which to build packages.
Usage
- Use
buildOrderto get a singlestring[]of builds in series. - Use
getBuildTrackerto get a tracker that tracks which packages become available to build when others complete.
buildOrder
buildOrder takes in settings object providing an Object or Map member named paths linking package names to their folder or package.json paths.
It returns a Promise for the order in which the packages should be built.
For example, if second has a dependency on first in its package.json, the order would be ["first", "second"].
import { buildOrder } from "package-build-order";Passing a traditional Object:
const order = await buildOrder({
paths: {
first: "./path/to/first",
second: "./path/to/second"
}
});Passing a Map:
const order = await buildOrder({
paths: new Map([
["first", "./path/to/first"],
["second", "./path/to/second"]
]
}))getBuildTracker
buildOrder takes in settings object providing an Object or Map member named paths linking package names to their folder or package.json paths.
It returns a Promise for a tracker object with two methods:
getAvailablePackages- Returns astring[]with all packages that are able to build.markCompleted- Marks a package as completed and returns astring[]of any packages that are now available to build.
If markCompleted returns an empty [], that indicates all possible packages have been completed.
import { getBuildTracker } from "package-build-order";
const tracker = await getBuildTracker({
paths: {
first: "./path/to/first", // dependencies: []
second: "./path/to/second" // dependencies: ["first"]
}
});
tracker.getAvailablePackages(); // ["first"]
tracker.markCompleted("first"); // ["second"]
tracker.getAvailablePackages(); // ["first", "second"]Settings
You can also pass direct references to .json files, provided they provide "dependencies" as an array of project names.
const order = await buildOrder({
paths: {
first: "./path/to/first/package.json",
second: "./path/to/second/custom-settings.json"
}
});Requires Node >= 7
