subpkg
is a roughly API-compatible implementation of
subpackage
which has zero dependencies and trades support
for environment variables for several additional features like linking and version bumping. subpkg
allows you to run scripts defined in package.json
across multiple sub-projects and serves as a
minimal alternative to Lerna or pnpm
's support for
'workspaces'.
$ npm install --save-dev subpkg
{
"name": "my-awesome-project",
"version": "2.5.1",
"subPackages": [
"packages/sub-package-1",
"packages/sub-package-2"
],
"scripts": {
"postinstall": "subpkg install && ...",
"build": "subpkg run build && ..."
}
}
{
"name": "my-awesome-project",
"version": "2.5.1",
"subPackages": {
"dirA" : "packagesA.json",
"dirB" : "packagesB.json"
},
"scripts": {
"postinstall": "subpkg install && ...",
"build": "subpkg run build && ..."
}
}
Where packagesA.json
is a JSON file specifying active/inactive packages in the directory dirA
and both dirA
and packagesA.json
are paths relative to root directory:
{
"sub-package-1": true,
"sub-package-2": true,
"sub-package-3": false,
}
Modules set to false
will not be taken into account.
This feature allows for seamless integration with the nWidart/laravel-modules project:
{
"name": "my-awesome-project",
"version": "2.5.1",
"subPackages": {
"modules" : "modules_statuses.json"
}
}
subpkg
is distributed under the terms of the MIT License.