banner
A TypeScript utility for generating JavaScript banner comments from package.json data
Installation
npm i @phucbm/banner
pnpm add @phucbm/banner
Usage
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
/*!
* my-package 1.0.0
* https://example.com
*
* @license MIT
* @author: John Doe, https://johndoe.com
*/
Integration with Build Tools
tsup
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
import {generateBanner} from '@phucbm/banner';
const banner = generateBanner();
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'esm',
banner: banner
}
};
Webpack
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 nameversion
(required) - Package versionhomepage
(optional) - Project homepage URLlicense
(optional) - License identifierauthor
(optional) - Author information object withname
and optionalurl
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
# 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