vite-plugin-banner
Version:
A banner plugin for Vite. Adds a banner to the top of each generated chunk.
12 lines (11 loc) • 2.64 kB
JavaScript
/**
* name: vite-plugin-banner
* version: v0.8.1
* description: A banner plugin for Vite. Adds a banner to the top of each generated chunk.
* author: chengpeiquan <chengpeiquan@chengpeiquan.com>
* homepage: https://github.com/chengpeiquan/vite-plugin-banner
* license: MIT
*/
;var P=Object.create;var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var w=(n,e)=>{for(var t in e)l(n,t,{get:e[t],enumerable:!0})},a=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of C(e))!j.call(n,i)&&i!==t&&l(n,i,{get:()=>e[i],enumerable:!(o=v(e,i))||o.enumerable});return n};var h=(n,e,t)=>(t=n!=null?P(O(n)):{},a(e||!n||!n.__esModule?l(t,"default",{value:n,enumerable:!0}):t,n)),x=n=>a(l({},"__esModule",{value:!0}),n);var B={};w(B,{default:()=>E});module.exports=x(B);var g=h(require("fs"),1),b=require("path");var D=n=>typeof n!="string"?"The banner content must be a string.":n?n.includes("/*")&&!n.includes("*/")||!n.includes("/*")&&n.includes("*/")?"If you want to pass in comment symbols, you must pass them in pairs.":"":"The banner content can not be empty.",y=n=>{let e={content:"",outDir:"",debug:!1,verify:!0},t=Object.prototype.toString.call(n);if(!["[object String]","[object Object]","[object Function]"].includes(t))throw new Error("[vite-plugin-banner] The options must be a string, an object or a function.");if(typeof n=="string"&&(e.content=n),typeof n=="function")return e.content=n,e;if(typeof n=="object"){if(!Object.prototype.hasOwnProperty.call(n,"content"))throw new Error('[vite-plugin-banner] Missing "content" option.');e.content=n.content,Object.prototype.hasOwnProperty.call(n,"outDir")&&typeof n.outDir=="string"&&(e.outDir=n.outDir),e.debug=!!n.debug,typeof n.verify=="boolean"&&(e.verify=n.verify)}if(!e.verify||typeof e.content=="function")return e;let o=D(e.content);if(o)throw new Error(`[vite-plugin-banner] ${o}`);return e};var c,R=new RegExp(/\.(css|[mc]?js)$/i),$=new RegExp(/vendor/);function E(n){let e=y(n);return{name:"banner",apply:"build",configResolved(t){c=t},async writeBundle(t,o){for(let i of Object.entries(o)){let d=c.root,m=e.outDir||c.build.outDir,s=i[0].endsWith(".js-lean")?i[0].replace(/\.js-lean/,".lean.js"):i[0],p=(0,b.resolve)(d,m,s),{content:u}=e;if(R.test(s)&&!$.test(s))try{let r=g.default.readFileSync(p,{encoding:"utf8"}),f=typeof u=="string"?u:"";typeof u=="function"&&(f=u(s)??""),f&&(f.includes("/*")||f.includes("*/")||!e.verify?r=`${f}
${r}`:r=`/*! ${f} */
${r}`),g.default.writeFileSync(p,r)}catch(r){e.debug&&console.log(r)}}}}}