From 66782588facf37c80e7826dbf70585e433e32e7f Mon Sep 17 00:00:00 2001 From: coletdjnz Date: Fri, 26 Sep 2025 20:00:56 +1200 Subject: [PATCH] Add license banner to generated files --- package.json | 1 + rollup.config.js | 53 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 274cd4b..beeba8e 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@rollup/plugin-node-resolve": "^16.0.1", "@rollup/plugin-sucrase": "5.0.2", "@rollup/plugin-terser": "0.4.4", + "rollup-plugin-license": "^3.6.0", "@types/bun": "1.2.21", "@types/deno": "2.3.0", "@types/node": "24.3.0", diff --git a/rollup.config.js b/rollup.config.js index ccfe5c4..0e96647 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -3,11 +3,30 @@ import nodeResolve from "@rollup/plugin-node-resolve"; import sucrase from "@rollup/plugin-sucrase"; import terser from "@rollup/plugin-terser"; import { createHash } from "node:crypto"; +import { Buffer } from "node:buffer"; +import license from 'rollup-plugin-license'; + +const LICENSE_BANNER = + "SPDX-License-Identifier: Unlicense\n" + + "This file was automatically generated by https://github.com/yt-dlp/ejs on <%= moment().toISOString() %>" + + "<% if (dependencies && dependencies.length) { %>" + + "\n\nBundled Dependencies:" + + "<% _.forEach(dependencies, function (dependency) { if (!dependency.private) { %>" + + "\n\n---\nName: <%= dependency.name %>" + + "<% if (dependency.version) { %>\nVersion: <%= dependency.version %><% } %>" + + "\nLicense: <%= dependency.license %>" + + "<% if (dependency.repository && dependency.repository.url) { %>\nRepository: <%= dependency.repository.url %><% } %>" + + "<% if (dependency.homepage && dependency.homepage.url) { %>\nHomepage: <%= dependency.homepage.url %><% } %>" + + "<% if (dependency.author) { %>\nAuthor: <%= dependency.author.text() %><% } %>" + + "<% if (dependency.licenseText) { %>\n\n<%= dependency.licenseText %><% } %>" + + "\n---<% } }) %>\n<% } %>" + +const ALLOWED_COMMENTS_RE = /SPDX-License-Identifier:/ function printHash() { return { name: "hash-output-plugin", - async writeBundle(options, bundle) { + writeBundle(_options, bundle) { for (const [fileName, assetInfo] of Object.entries(bundle)) { if (assetInfo.code) { try { @@ -43,6 +62,11 @@ export default defineConfig([ exclude: ["node_modules/**"], transforms: ["typescript"], }), + license({ + banner: { + content: LICENSE_BANNER + }, + }), printHash(), ], }, @@ -67,7 +91,16 @@ export default defineConfig([ exclude: ["node_modules/**"], transforms: ["typescript"], }), - terser(), + terser({ + format: { + comments: ALLOWED_COMMENTS_RE + } + }), + license({ + banner: { + content: LICENSE_BANNER + }, + }), printHash(), ], }, @@ -85,6 +118,11 @@ export default defineConfig([ exclude: ["node_modules/**"], transforms: ["typescript"], }), + license({ + banner: { + content: LICENSE_BANNER + }, + }), printHash(), ], }, @@ -103,7 +141,16 @@ export default defineConfig([ exclude: ["node_modules/**"], transforms: ["typescript"], }), - terser(), + terser({ + format: { + comments: ALLOWED_COMMENTS_RE + } + }), + license({ + banner: { + content: LICENSE_BANNER + }, + }), printHash(), ], },