UNPKG

vite-plugin-banner

Version:

A banner plugin for Vite. Adds a banner to the top of each generated chunk.

12 lines (11 loc) 2.03 kB
/** * 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 */ import p from"node:fs";import{resolve as d}from"node:path";var b=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.",g=n=>{let e={content:"",outDir:"",debug:!1,verify:!0},o=Object.prototype.toString.call(n);if(!["[object String]","[object Object]","[object Function]"].includes(o))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 r=b(e.content);if(r)throw new Error(`[vite-plugin-banner] ${r}`);return e};var l,m=new RegExp(/\.(css|[mc]?js)$/i),P=new RegExp(/vendor/);function w(n){let e=g(n);return{name:"banner",apply:"build",configResolved(o){l=o},async writeBundle(o,r){for(let u of Object.entries(r)){let a=l.root,y=e.outDir||l.build.outDir,f=u[0].endsWith(".js-lean")?u[0].replace(/\.js-lean/,".lean.js"):u[0],c=d(a,y,f),{content:s}=e;if(m.test(f)&&!P.test(f))try{let t=p.readFileSync(c,{encoding:"utf8"}),i=typeof s=="string"?s:"";typeof s=="function"&&(i=s(f)??""),i&&(i.includes("/*")||i.includes("*/")||!e.verify?t=`${i} ${t}`:t=`/*! ${i} */ ${t}`),p.writeFileSync(c,t)}catch(t){e.debug&&console.log(t)}}}}}export{w as default};