1
mirror of https://github.com/thepeacockproject/Peacock synced 2024-11-22 22:12:45 +01:00
Peacock/packaging/esbuild-plugin-license.mjs

52 lines
1.8 KiB
JavaScript
Raw Normal View History

/*
* The Peacock Project - a HITMAN server replacement.
* Copyright (C) 2021-2023 The Peacock Project Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import rollupPluginLicense from "rollup-plugin-license"
/**
* Plugin that emits the third party notices file, taken from the Prettier source code.
*
* @see https://github.com/prettier/prettier/blob/aa1d536e29a55e4647452e87c2fa61c2b8c7d92d/scripts/build/esbuild-plugins/license.mjs
*/
export function esbuildPluginLicense(options) {
const plugin = rollupPluginLicense(options)
return {
name: "license",
setup(build) {
build.initialOptions.metafile = true
build.onEnd((result) => {
if (result.errors.length > 0) {
return
}
const files = Object.keys(result.metafile.inputs)
const chunk = {
modules: Object.fromEntries(
files.map((file) => [file, { renderedLength: 1 }]),
),
}
plugin.renderChunk("", chunk)
plugin.generateBundle()
})
},
}
}