用户:
卫道士32_32*2没了查看:0 回复:3 评论:0 创建时间:2021-06-12T13:01:45
let fs = require('fs');
String.prototype.has=function(c){return this.indexOf(c)>-1;};function j喵in(comment,input,level){if(input===undefined){input=comment;comment='';level=3;}else if(level===undefined||level<1||level>3){level=23;}if(comment.length>0){comment+=' ';}var a='',b='',EOF=-1,LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',DIGITS='0123456789',ALNUM=LETTERS+DIGITS+'_$\\',theLookahead=EOF;function isAlphanum(c){return c!=EOF&&(ALNUM.has(c)||c.charCodeAt(0)>126);}function get(){var c=theLookahead;if(get.i==get.l){return EOF;}theLookahead=EOF;if(c==EOF){c=input.charAt(get.i);++get.i;}if(c>=' '||c=='\n'){return c;}if(c=='\r'){return'\n';}return' ';}get.i=0;get.l=input.length;function peek(){theLookahead=get();return theLookahead;}function next(){var c=get();if(c=='/'){switch(peek()){case'/':for(;;){c=get();if(c<='\n'){return c;}}break;case'*':get();for(;;){switch(get()){case'*':if(peek()=='/'){get();return' ';}break;case EOF:throw'Error: Unterminated comment.';}}break;default:return c;}}return c;}function action(d){var r=[];if(d==1){r.push(a);}if(d<3){a=b;if(a=='\''||a=='"'){for(;;){r.push(a);a=get();if(a==b){break;}if(a<='\n'){throw'Error: unterminated string literal: '+a;}if(a=='\\'){r.push(a);a=get();}}}}b=next();if(b=='/'&&'(,=:[!&|'.has(a)){r.push(a);r.push(b);for(;;){a=get();if(a=='/'){break;}else if(a=='\\'){r.push(a);a=get();}else if(a<='\n'){throw'Error: unterminated Regular Expression literal';}r.push(a);}b=next();}return r.join('');}function m(){var r=[];a='\n';r.push(action(3));while(a!=EOF){switch(a){case' ':if(isAlphanum(b)){r.push(action(1));}else{r.push(action(2));}break;case'\n':switch(b){case'{':case'[':case'(':case'+':case'-':r.push(action(1));break;case' ':r.push(action(3));break;default:if(isAlphanum(b)){r.push(action(1));}else{if(level==1&&b!='\n'){r.push(action(1));}else{r.push(action(2));}}}break;default:switch(b){case' ':if(isAlphanum(a)){r.push(action(1));break;}r.push(action(3));break;case'\n':if(level==1&&a!='\n'){r.push(action(1));}else{switch(a){case'}':case']':case')':case'+':case'-':case'"':case'\'':if(level==3){r.push(action(3));}else{r.push(action(1));}break;default:if(isAlphanum(a)){r.push(action(1));}else{r.push(action(3));}}}break;default:r.push(action(1));break;}}}return r.join('');}j喵in.oldSize=input.length;ret=m(input);j喵in.newSize=ret.length;return comment+ret;}
var arguments = process.argv.splice(2);
console.log('所传递的参数是:', arguments);
if(arguments.length==2){
let packs=[];
let pnms=[];
let f=fs.readFileSync(arguments[0]);
let dt=j喵in(f.toString());
let name=Array.from(dt.matchAll(/require\(".*?"\)/g));
name.forEach(x=>{
let m=x[0].match(/".*?"/)[0];
let ae=m.slice(1,m.length-1);
if(ae.startsWith("./")){
console.log(ae)
pnms.push(ae);
packs.push(j喵in(fs.readFileSync(ae).toString()));
}
})
console.log(packs)
let ac="let pack={";
var i=0;
packs.forEach(x=>{
ac+="\""+pnms[i]+"\":()=>{"+x+"}";
i++;
});
ac+="};";
let e=j喵in(dt);
ac+=e;
ac+=`function require(e){return pack[e]()}`
fs.writeFileSync(arguments[1],`
/*
* packed by bundle.js
*/
`+j喵in(ac));
}