{"id":29955126,"url":"https://github.com/phucbm/banner","last_synced_at":"2025-09-04T10:45:12.973Z","repository":{"id":302232663,"uuid":"1011718391","full_name":"phucbm/banner","owner":"phucbm","description":"Reads package.json and generates a banner string","archived":false,"fork":false,"pushed_at":"2025-08-15T23:26:51.000Z","size":475,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-31T06:01:24.679Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phucbm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"phucbm","patreon":"phucbm","open_collective":"phucbm","ko_fi":"phucbm","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2025-07-01T08:37:14.000Z","updated_at":"2025-08-15T23:26:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0defc6f-c014-4b31-b413-cee34f51c332","html_url":"https://github.com/phucbm/banner","commit_stats":null,"previous_names":["phucbm/banner"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/phucbm/banner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phucbm%2Fbanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phucbm%2Fbanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phucbm%2Fbanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phucbm%2Fbanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phucbm","download_url":"https://codeload.github.com/phucbm/banner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phucbm%2Fbanner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273595671,"owners_count":25134258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-03T17:10:50.208Z","updated_at":"2025-09-04T10:45:12.924Z","avatar_url":"https://github.com/phucbm.png","language":"TypeScript","funding_links":["https://github.com/sponsors/phucbm","https://patreon.com/phucbm","https://opencollective.com/phucbm","https://ko-fi.com/phucbm"],"categories":[],"sub_categories":[],"readme":"# banner\n\nA TypeScript utility for generating JavaScript banner comments from package.json data\n\n[![Publish on Release](https://github.com/phucbm/banner/actions/workflows/publish.yml/badge.svg)](https://github.com/phucbm/banner/actions/workflows/publish.yml)\n[![npm version](https://badgen.net/npm/v/@phucbm/banner?icon=npm)](https://www.npmjs.com/package/@phucbm/banner)\n[![npm downloads](https://badgen.net/npm/dm/@phucbm/banner?icon=npm)](https://www.npmjs.com/package/@phucbm/banner)\n[![npm dependents](https://badgen.net/npm/dependents/@phucbm/banner?icon=npm)](https://www.npmjs.com/package/@phucbm/banner)\n[![github stars](https://badgen.net/github/stars/phucbm/banner?icon=github)](https://github.com/phucbm/banner/)\n[![github license](https://badgen.net/github/license/phucbm/banner?icon=github)](https://github.com/phucbm/banner/blob/main/LICENSE)\n\n## Installation\n\n```bash\nnpm i @phucbm/banner\n```\n\n```bash\npnpm add @phucbm/banner\n```\n\n## Usage\n\n```typescript\nimport {generateBanner} from '@phucbm/banner'\n\n// Using default package.json path\nconst banner = generateBanner();\n\n// Using custom package.json path\nconst banner = generateBanner('./custom/package.json');\n\n// Using package.json object directly\nimport pkg from './package.json';\n\nconst banner = generateBanner(pkg);\n\n// Using custom object\nconst banner = generateBanner({\n    name: 'my-package',\n    version: '1.0.0',\n    homepage: 'https://example.com',\n    license: 'MIT',\n    author: {\n        name: 'John Doe',\n        url: 'https://johndoe.com'\n    }\n});\n```\n\n### Example Output\n\n```javascript\n/*!\n * my-package 1.0.0\n * https://example.com\n *\n * @license MIT\n * @author: John Doe, https://johndoe.com\n */\n```\n\n### Integration with Build Tools\n\n#### tsup\n\n```typescript\nimport {defineConfig} from 'tsup';\nimport {generateBanner} from '@phucbm/banner';\n\nconst banner = generateBanner();\n\nexport default defineConfig({\n    entry: ['src/index.ts'],\n    format: ['esm'],\n    banner: {js: banner},\n    // ... other options\n});\n```\n\n#### Rollup\n\n```javascript\nimport {generateBanner} from '@phucbm/banner';\n\nconst banner = generateBanner();\n\nexport default {\n    input: 'src/index.js',\n    output: {\n        file: 'dist/bundle.js',\n        format: 'esm',\n        banner: banner\n    }\n};\n```\n\n#### Webpack\n\n```javascript\nimport {BannerPlugin} from 'webpack';\nimport {generateBanner} from '@phucbm/banner';\n\nconst banner = generateBanner();\n\nmodule.exports = {\n    plugins: [\n        new BannerPlugin({\n            banner: banner,\n            raw: true\n        })\n    ]\n};\n```\n\n## API\n\n### `generateBanner(input?: string | PackageJson): string`\n\nGenerates a JavaScript banner comment from package.json data.\n\n**Parameters:**\n\n- `input` (optional) - Either a path to package.json file (defaults to `'./package.json'`) or a package.json object\n\n**Returns:**\n\n- A formatted banner string ready for use in JavaScript files\n\n**Package.json Fields Used:**\n\n- `name` (required) - Package name\n- `version` (required) - Package version\n- `homepage` (optional) - Project homepage URL\n- `license` (optional) - License identifier\n- `author` (optional) - Author information object with `name` and optional `url`\n\n## Features\n\n- 📦 Reads directly from package.json files or objects\n- 🎯 TypeScript support with full type definitions\n- 🔧 Works with popular build tools (tsup, Rollup, Webpack, etc.)\n- 🛡️ Graceful handling of missing optional fields\n- ⚡ Zero dependencies\n- 🧪 Comprehensive test coverage\n\n## Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Run tests\npnpm test\n\n# Build the package\npnpm run build\n\n# Run tests in watch mode\npnpm run test:watch\n```\n\n## License\n\nMIT © [phucbm](https://github.com/phucbm)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphucbm%2Fbanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphucbm%2Fbanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphucbm%2Fbanner/lists"}