https://github.com/phucbm/banner
Reads package.json and generates a banner string
https://github.com/phucbm/banner
Last synced: 11 months ago
JSON representation
Reads package.json and generates a banner string
- Host: GitHub
- URL: https://github.com/phucbm/banner
- Owner: phucbm
- License: mit
- Created: 2025-07-01T08:37:14.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-15T23:26:51.000Z (11 months ago)
- Last Synced: 2025-08-31T06:01:24.679Z (11 months ago)
- Language: TypeScript
- Size: 464 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# banner
A TypeScript utility for generating JavaScript banner comments from package.json data
[](https://github.com/phucbm/banner/actions/workflows/publish.yml)
[](https://www.npmjs.com/package/@phucbm/banner)
[](https://www.npmjs.com/package/@phucbm/banner)
[](https://www.npmjs.com/package/@phucbm/banner)
[](https://github.com/phucbm/banner/)
[](https://github.com/phucbm/banner/blob/main/LICENSE)
## Installation
```bash
npm i @phucbm/banner
```
```bash
pnpm add @phucbm/banner
```
## Usage
```typescript
import {generateBanner} from '@phucbm/banner'
// Using default package.json path
const banner = generateBanner();
// Using custom package.json path
const banner = generateBanner('./custom/package.json');
// Using package.json object directly
import pkg from './package.json';
const banner = generateBanner(pkg);
// Using custom object
const banner = generateBanner({
name: 'my-package',
version: '1.0.0',
homepage: 'https://example.com',
license: 'MIT',
author: {
name: 'John Doe',
url: 'https://johndoe.com'
}
});
```
### Example Output
```javascript
/*!
* my-package 1.0.0
* https://example.com
*
* @license MIT
* @author: John Doe, https://johndoe.com
*/
```
### Integration with Build Tools
#### tsup
```typescript
import {defineConfig} from 'tsup';
import {generateBanner} from '@phucbm/banner';
const banner = generateBanner();
export default defineConfig({
entry: ['src/index.ts'],
format: ['esm'],
banner: {js: banner},
// ... other options
});
```
#### Rollup
```javascript
import {generateBanner} from '@phucbm/banner';
const banner = generateBanner();
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'esm',
banner: banner
}
};
```
#### Webpack
```javascript
import {BannerPlugin} from 'webpack';
import {generateBanner} from '@phucbm/banner';
const banner = generateBanner();
module.exports = {
plugins: [
new BannerPlugin({
banner: banner,
raw: true
})
]
};
```
## API
### `generateBanner(input?: string | PackageJson): string`
Generates a JavaScript banner comment from package.json data.
**Parameters:**
- `input` (optional) - Either a path to package.json file (defaults to `'./package.json'`) or a package.json object
**Returns:**
- A formatted banner string ready for use in JavaScript files
**Package.json Fields Used:**
- `name` (required) - Package name
- `version` (required) - Package version
- `homepage` (optional) - Project homepage URL
- `license` (optional) - License identifier
- `author` (optional) - Author information object with `name` and optional `url`
## Features
- 📦 Reads directly from package.json files or objects
- 🎯 TypeScript support with full type definitions
- 🔧 Works with popular build tools (tsup, Rollup, Webpack, etc.)
- 🛡️ Graceful handling of missing optional fields
- ⚡ Zero dependencies
- 🧪 Comprehensive test coverage
## Development
```bash
# Install dependencies
pnpm install
# Run tests
pnpm test
# Build the package
pnpm run build
# Run tests in watch mode
pnpm run test:watch
```
## License
MIT © [phucbm](https://github.com/phucbm)