https://github.com/martingreilinger/ppjg
Remove development bloat form your published package.json
https://github.com/martingreilinger/ppjg
cli development generator package-json tool
Last synced: 5 months ago
JSON representation
Remove development bloat form your published package.json
- Host: GitHub
- URL: https://github.com/martingreilinger/ppjg
- Owner: martingreilinger
- License: mit
- Created: 2020-06-14T14:26:09.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-02T14:36:47.000Z (over 3 years ago)
- Last Synced: 2025-10-28T03:14:56.646Z (8 months ago)
- Topics: cli, development, generator, package-json, tool
- Language: TypeScript
- Homepage:
- Size: 772 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Publish Package JSON Generator
[](https://github.com/martingreilinger/ppjg/actions?query=workflow%3ACI) [](https://www.npmjs.com/package/ppjg) [](https://lbesson.mit-license.org/)
Generate a dedicated `package.json` for publishing without development bloat.
- Only **include properties** you need for publishing
- **Override** development **values**
- **Addition** of new **properties**
## Quick Start
- Install the **ppjg** as a development dependency
````shell script
node i -D ppjg
````
- Create a new _publish config_ called `ppj.config.js` in your project root directory
- Define which `package.json` keys to _persist_ and which to _override_:
````javascript
module.exports = {
persist: ['author', 'dependencies'],
alter: {
version: process.env.VERSION
}
};
````
- Run **ppjg** by executing the `generatePublishPackageJson` function or by executing the binary via Node
````shell script
VERSION='V1' npx ppjg
````
- Generated example `./out/package.json`
````json
{
"author": "John Doe",
"dependencies": {
"example": "1.0.0"
},
"version": "V1"
}
````
## Configuration
### The Publish-Configuration
The publish-configuration defines which properties of the projects `package.json` are kept and which will be overwritten.
By default, the publish-configuration is defined inside the `ppj.config.js`.
To provide a differently named configuration, see the [Generator Configuration](#the-generator-configuration) section.
Property | Description | Config Property
---------|-------------|----------------
`persist`| An array of property names which will be kept inside the publish-configuration| `{ persist: ['author', 'name'] }`
`alter` | An object of new or altered properties and their values| `{ alter: { bin: './cli.js' } }`
### The Generator Configuration
Property | Description | CLI Flag | Config Property
---------|-------------|----------|----------------
Output Directory|Defines the location of the generated `package.json`|`-o, --outDir DIRECTORY`|`{ outDir: DIRECTORY }`
Publish Config File|File name of the config used for the generation|`-c, --config FILE`|`{publishConfigFileName: FILE}`
## Usage
### Binary
The provided binary offers easy invocation via the _CLI_ or _NPM script_.
#### CLI
- Directly execute the binary with `npx`:
````shell script
npx ppjg [options]
````
#### NPM script
- Create a new script entry invoking the binary:
````json
{
"scripts": {
"generatePPJ": "ppjg [options]"
}
}
````
- Run the script:
````shell script
npm run generatePPJ
````
### Programmatically
- It is also possible to invoke the generator function directly:
````typescript
import { generatePublishPackageJson, GeneratorConfigModel } from 'ppjg';
const config: Partial | undefined = { /* optional config data */ }
generatePublishPackageJson(config);
````