| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import type {
- NormalizedOutputOptions,
- OutputBundle,
- OutputChunk,
- } from 'rollup';
- import type { PluginOption } from 'vite';
- import { EOL } from 'node:os';
- import { dateUtil, readPackageJSON } from '@vben/node-utils';
- /**
- * 用于注入版权信息
- * @returns
- */
- async function viteLicensePlugin(
- root = process.cwd(),
- ): Promise<PluginOption | undefined> {
- const {
- description = '',
- homepage = '',
- version = '',
- } = await readPackageJSON(root);
- return {
- apply: 'build',
- enforce: 'post',
- generateBundle: {
- handler: (_options: NormalizedOutputOptions, bundle: OutputBundle) => {
- const date = dateUtil().format('YYYY-MM-DD ');
- const copyrightText = `/*!
- * Vben Admin
- * Version: ${version}
- * Author: vben
- * Copyright (C) 2024 Vben
- * License: MIT License
- * Description: ${description}
- * Date Created: ${date}
- * Homepage: ${homepage}
- * Contact: ann.vben@gmail.com
- */
- `.trim();
- for (const [, fileContent] of Object.entries(bundle)) {
- if (fileContent.type === 'chunk' && fileContent.isEntry) {
- const chunkContent = fileContent as OutputChunk;
- // 插入版权信息
- const content = chunkContent.code;
- const updatedContent = `${copyrightText}${EOL}${content}`;
- // 更新bundle
- (fileContent as OutputChunk).code = updatedContent;
- }
- }
- },
- order: 'post',
- },
- name: 'vite:license',
- };
- }
- export { viteLicensePlugin };
|