UNPKG

clean-package

Version:

Removes and replaces configuration keys in 'package.json' before creating an NPM package.

2 lines 2.12 kB
/*! clean-package v2.2.0 | (c) roydukkey | https://roydukkey@github.com/roydukkey/clean-package/blob/v2.2.0/LICENSE */ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("path"),t=require("fs"),r=require("util"),n=require("dot-prop"),o="clean-package";const a="./package.json",c=e=>`${e}.backup`,s=[`./${o}.config.json`,`./${o}.config.js`,`./${o}.config.mjs`,`./${o}.config.cjs`],p=2,i=e=>[...new Set(e)],u=({onClean:e,onRestore:t,...r},{remove:n,replace:o,onClean:a,onRestore:c,...s})=>{const p={remove:n,replace:o};return r.backupPath?p.backupPath=r.backupPath:s.backupPath&&(p.backupPath=s.backupPath),r.indent?p.indent=r.indent:s.indent&&(p.indent=s.indent),"function"==typeof r.remove?p.remove=i(r.remove(n)):r.remove&&(p.remove=i(n.concat(r.remove))),"function"==typeof r.replace?p.replace=r.replace(o):r.replace&&(p.replace={...o,...r.replace}),e?p.onClean=a?(t,r)=>(a(t,r),e(t,r)):e:a&&(p.onClean=a),t?p.onRestore=c?(e,r)=>(c(e,r),t(e,r)):t:c&&(p.onRestore=c),p},l=e=>("string"==typeof e&&(e=[e]),e.map((e=>{let t=require(e);return t.extends&&(t=u(t,l(t.extends))),t})).reduce(((e,t)=>u(t,e)),{remove:[],replace:{}})),f=t=>e.resolve(process.cwd(),t),h=e=>(e=f(e),require(e));exports.clean=(e,o)=>{let a=!1;o.remove.forEach((t=>{n.delete(e,t)&&!a&&(a=!0)}));for(const[t,c]of Object.entries(o.replace))r.isDeepStrictEqual(n.get(e,t),c)||(n.set(e,t,c),a=!0);a&&(t.renameSync(o.sourcePath,o.backupPath),t.writeFileSync(o.sourcePath,`${JSON.stringify(e,null,o.indent)}\n`)),o.onClean&&o.onClean(a,o)},exports.load=(e=a,r)=>{e=f(e);const n=h(e);let i=((e,r)=>{if("string"==typeof r)r=h(r);else if(!r)for(const e of s)if(n=f(n=e),r=t.existsSync(n)?require(n):void 0)break;var n;let o={sourcePath:e,backupPath:c(e),indent:p,remove:[],replace:{}};return r&&(o={...o,...u(r,l(r.extends??[]))}),o.backupPath=f(o.backupPath),o})(e,n[o]);return"string"==typeof r&&(r=h(r)),r&&(i={...i,...u(r,i)}),i.backupPath=f(i.backupPath),[n,i]},exports.restore=e=>{const r=t.existsSync(e.backupPath);r&&t.renameSync(e.backupPath,e.sourcePath),e.onRestore&&e.onRestore(r,e)},exports.version=()=>"v2.2.0";