zen-app-plugin 0.3.6 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/compress.js +1 -1
  2. package/index.js +1 -1
  3. package/package.json +1 -1
package/compress.js CHANGED
@@ -1 +1 @@
1
- !function(){const e=require("os"),t=require("simple-git")("./"),n=require("shelljs"),s=require("pako"),i=new RegExp("(https?:)?//((b|a)\\.(ebus))\\.vip/.+?\\.(svg|js|png|gif|jpe?g|ttf|woff2?|eot|css)","gi"),c=[".js",".css",".svg"],o=[".js",".css",".xml"],r=require("fs"),{join:a,dirname:f,resolve:u,extname:l}=require("path"),d="//a.zeto.me/",p=require("cos-nodejs-sdk-v5"),g=require("ali-oss"),{TosClient:y}=require("@volcengine/tos-sdk");let S,x,h,O,b;function m(e){const t=a(e,"package.json"),n=r.readFileSync(t,"utf8");return JSON.parse(n)}function j(e,t){let n={Bucket:h.bucket,Region:h.region,Key:e,StorageClass:"STANDARD"},i=e.indexOf(".js")>-1;i||e.indexOf(".css")>-1?(n.Headers={"Content-Encoding":"gzip","Content-Type":i?"application/javascript":"text/css"},n.Body=Buffer.from(s.gzip(r.readFileSync(t,"utf8")))):n.Body=r.createReadStream(t),x.putObject(n,((t,n)=>{if(t)return console.log(t,n);console.log(d+e)}))}function z(e,t){let n={bucket:h.tosBucket,key:e},i=e.indexOf(".js")>-1;i||e.indexOf(".css")>-1?(n.headers={"Content-Encoding":"gzip","Content-Type":i?"application/javascript":"text/css"},n.body=Buffer.from(s.gzip(r.readFileSync(t,"utf8")))):n.body=r.createReadStream(t),x.putObject(n,((t,n)=>{if(t)return console.log(t,n);console.log(d+e)}))}function w(e,t){let n,i,c=e.indexOf(".js")>-1;c||e.indexOf(".css")>-1?(i={"Content-Encoding":"gzip","Content-Type":c?"application/javascript":"text/css"},n=Buffer.from(s.gzip(r.readFileSync(t,"utf8")))):(n=r.createReadStream(t),i={}),x.put(e,n,{headers:i})}function k(e,t){r.readdirSync(e).forEach((n=>{if(0===n.indexOf(".")||n.indexOf(".html")>-1)return;let s=a(e,n),i=r.statSync(s);if(i.isDirectory()&&k(s,a(t,n)),i.isFile()){let e=a(t,n).replace(/\\/gi,"/");console.log(e),b(e,s)}}))}function $(e){const t=l(e);if(0===e.indexOf(".")||".html"===t)return;let u;if(u=e.indexOf("dist")>-1?S+e.substr(O.length+5):S+e.substr(O.length+7),n.mkdir("-p",f(u)),!c.includes(t))return n.cp(e,u);const d=r.readFileSync(e,"utf8").replace(i,(e=>e.indexOf("'")>-1||e.indexOf('"')>-1?e:function(e){let t=e.substr(e.indexOf(".vip")+4);t.startsWith("/f01")&&(t=t.substr(4));const s=a(S,t),i=l(s);if(!r.existsSync(s)||o.includes(i)){n.mkdir("-p",f(s));const t=e.indexOf(":")>-1?e:`https:${e}`;let i=`wget --timeout=15 -O "${s}" "${t}"`;(s.indexOf(".js")>-1||s.indexOf(".css")>-1)&&(i=`wget -qO- "${t}" | gzip > "${s}"`);const c=n.exec(i);if(0!==c.code)return console.error(`Failed to download ${i}: ${c.stderr}`),e}return t}(e)));r.writeFileSync(u,Buffer.from(s.gzip(d)),"utf8")}function F(e){const t=r.readdirSync(e);for(const n of t){if(n.startsWith("."))continue;const t=a(e,n),s=r.statSync(t);s.isDirectory()?F(t):s.isFile()&&$(t)}}function v(e,t){const n=r.readdirSync(e);for(const s of n){const n=a(e,s);if(r.statSync(n).isDirectory())v(n,t);else if(e.indexOf(".lowcode")>-1&&"data"===s){const e=r.readFileSync(n,"utf8"),{path:s,basic:i,actions:c=[]}=JSON.parse(e);if(!s)continue;const o=[];i.actions.forEach((({_id:e,label:t,mode:n,href:s})=>{const i={id:e+"",label:t};"link"===n&&s&&(i.link=s.substr(1)),o.push(i)})),c.forEach((({_id:e,label:t,mode:n,href:s})=>{const i={id:e+"",label:t};"link"===n&&s&&(i.link=s.substr(1)),o.push(i)})),o.length>0&&(t[s]=o)}}}exports.remote=async function(s,i){if(!i)return;O=s,h=JSON.parse(r.readFileSync(a(e.homedir(),".cc.json"))),"tos"===i?(x=new y({accessKeyId:h.tosId,accessKeySecret:h.tosSecret,region:h.tosRegion,endpoint:h.tosEndpoint}),b=z):"oss"===i?(x=new g({region:h.ossRegion,accessKeyId:h.ossId,accessKeySecret:h.ossSecret,bucket:h.ossBucket,authorizationV4:!0}),b=w):(x=new p({SecretId:h.id,SecretKey:h.key}),b=j);let c=m(s).name;const o=await async function(e,n){const s=a(e,"..",n,"src","main","resources","config","app");if(!r.existsSync(s))try{return(await t.branchLocal()).current}catch(e){return"01"}try{const e=r.readFileSync(s,"utf8");return JSON.parse(e).tag}catch(e){return""}}(s,c),f=a(s,"dist"),u=a(s,"public");["zen.js","zen.css","zen.wap.js","zen.wap.css"].forEach((e=>{const t=`wget --timeout=15 "https://b.ebus.vip/zeto/latest/${e}" -O - | gunzip > "${a(u,e)}"`;console.log(t),n.exec(t)})),k(f,`${c}/${o}`),r.existsSync(u)&&k(u,`${c}/${o}`)},exports.locale=function(e){O=e;const t=m(e).name;S=u(e,"..",t,"src","main","resources","static");const s=a(e,"public"),i=a(e,"dist");["zen.js","zen.css","zen.wap.js","zen.wap.css"].forEach((e=>{const t=`wget --timeout=15 "https://b.ebus.vip/zeto/latest/${e}" -O - | gunzip > "${a(s,e)}"`;console.log(t),n.exec(t)})),F(i),r.existsSync(s)&&F(s);const c={};v(a(e,"src"),c),r.writeFileSync(a(S,"..","config","points"),JSON.stringify(c),"utf8")}}();
1
+ !function(){const e=require("os"),t=require("simple-git")("./"),s=require("shelljs"),n=require("pako"),i=new RegExp("(https?:)?//((b|a)\\.(ebus))\\.vip/.+?\\.(svg|js|png|gif|jpe?g|ttf|woff2?|eot|css)","gi"),o=[".js",".css",".svg"],c=[".js",".css",".xml"],r=require("fs"),{join:a,dirname:f,resolve:l,extname:u}=require("path");let d="/";const p=require("cos-nodejs-sdk-v5"),g=require("ali-oss"),{TosClient:y}=require("@volcengine/tos-sdk");let S,x,h,m,O;function b(e){const t=a(e,"package.json"),s=r.readFileSync(t,"utf8");return JSON.parse(s)}function j(e,t){let s={Bucket:h.bucket,Region:h.region,Key:e,StorageClass:"STANDARD"},i=e.indexOf(".js")>-1;i||e.indexOf(".css")>-1?(s.Headers={"Content-Encoding":"gzip","Content-Type":i?"application/javascript":"text/css"},s.Body=Buffer.from(n.gzip(r.readFileSync(t,"utf8")))):s.Body=r.createReadStream(t),x.putObject(s,((t,s)=>{if(t)return console.log(t,s);console.log(d+e)}))}function z(e,t){let s={bucket:h.tosBucket,key:e},i=e.indexOf(".js")>-1;i||e.indexOf(".css")>-1?(s.headers={"Content-Encoding":"gzip","Content-Type":i?"application/javascript":"text/css"},s.body=Buffer.from(n.gzip(r.readFileSync(t,"utf8")))):s.body=r.createReadStream(t),x.putObject(s,((t,s)=>{if(t)return console.log(t,s);console.log(d+e)}))}function w(e,t){let s,i,o=e.indexOf(".js")>-1;o||e.indexOf(".css")>-1?(i={"Content-Encoding":"gzip","Content-Type":o?"application/javascript":"text/css"},s=Buffer.from(n.gzip(r.readFileSync(t,"utf8")))):(s=r.createReadStream(t),i={}),x.put(e,s,{headers:i})}function k(e,t){r.readdirSync(e).forEach((s=>{if(0===s.indexOf(".")||s.indexOf(".html")>-1)return;let n=a(e,s),i=r.statSync(n);if(i.isDirectory()&&k(n,a(t,s)),i.isFile()){let e=a(t,s).replace(/\\/gi,"/");console.log(e),O(e,n)}}))}function $(e){const t=u(e);if(0===e.indexOf(".")||".html"===t)return;let l;if(l=e.indexOf("dist")>-1?S+e.substr(m.length+5):S+e.substr(m.length+7),s.mkdir("-p",f(l)),!o.includes(t))return s.cp(e,l);const d=r.readFileSync(e,"utf8").replace(i,(e=>e.indexOf("'")>-1||e.indexOf('"')>-1?e:function(e){let t=e.substr(e.indexOf(".vip")+4);t.startsWith("/f01")&&(t=t.substr(4));const n=a(S,t),i=u(n);if(!r.existsSync(n)||c.includes(i)){s.mkdir("-p",f(n));const t=e.indexOf(":")>-1?e:`https:${e}`;let i=`wget --timeout=15 -O "${n}" "${t}"`;(n.indexOf(".js")>-1||n.indexOf(".css")>-1)&&(i=`wget -qO- "${t}" | gzip > "${n}"`);const o=s.exec(i);if(0!==o.code)return console.error(`Failed to download ${i}: ${o.stderr}`),e}return t}(e)));r.writeFileSync(l,Buffer.from(n.gzip(d)),"utf8")}function F(e){const t=r.readdirSync(e);for(const s of t){if(s.startsWith("."))continue;const t=a(e,s),n=r.statSync(t);n.isDirectory()?F(t):n.isFile()&&$(t)}}function v(e,t){const s=r.readdirSync(e);for(const n of s){const s=a(e,n);if(r.statSync(s).isDirectory())v(s,t);else if(e.indexOf(".lowcode")>-1&&"data"===n){const e=r.readFileSync(s,"utf8"),{path:n,basic:i,actions:o=[]}=JSON.parse(e);if(!n)continue;const c=[];i.actions.forEach((({_id:e,label:t,mode:s,href:n})=>{const i={id:e+"",label:t};"link"===s&&n&&(i.link=n.substr(1)),c.push(i)})),o.forEach((({_id:e,label:t,mode:s,href:n})=>{const i={id:e+"",label:t};"link"===s&&n&&(i.link=n.substr(1)),c.push(i)})),c.length>0&&(t[n]=c)}}}exports.remote=async function(n,i){if(!i)return;m=n,h=JSON.parse(r.readFileSync(a(e.homedir(),".cc.json"))),"tos"===i?(x=new y({accessKeyId:h.tosId,accessKeySecret:h.tosSecret,region:h.tosRegion,endpoint:h.tosEndpoint}),d=h.tosDomain+"/",O=z):"oss"===i?(x=new g({region:h.ossRegion,accessKeyId:h.ossId,accessKeySecret:h.ossSecret,bucket:h.ossBucket,authorizationV4:!0}),d=h.ossDomain+"/",O=w):(x=new p({SecretId:h.id,SecretKey:h.key}),d=h.cosDomain+"/",O=j);let o=b(n).name;const c=await async function(e,s){const n=a(e,"..",s,"target","classes","config","app");if(!r.existsSync(n))try{return(await t.branchLocal()).current}catch(e){return"01"}try{const e=r.readFileSync(n,"utf8");return JSON.parse(e).tag}catch(e){return""}}(n,o),f=a(n,"dist"),l=a(n,"public");["zen.js","zen.css","zen.wap.js","zen.wap.css"].forEach((e=>{const t=`wget --timeout=15 "https://b.ebus.vip/zeto/latest/${e}" -O - | gunzip > "${a(l,e)}"`;console.log(t),s.exec(t)})),k(f,`${o}/${c}`),r.existsSync(l)&&k(l,`${o}/${c}`)},exports.locale=function(e){m=e;const t=b(e).name;S=l(e,"..",t,"src","main","resources","static");const n=a(e,"public"),i=a(e,"dist");["zen.js","zen.css","zen.wap.js","zen.wap.css"].forEach((e=>{const t=`wget --timeout=15 "https://b.ebus.vip/zeto/latest/${e}" -O - | gunzip > "${a(n,e)}"`;console.log(t),s.exec(t)})),F(i),r.existsSync(n)&&F(n);const o={};v(a(e,"src"),o),r.writeFileSync(a(S,"..","config","points"),JSON.stringify(o),"utf8")}}();
package/index.js CHANGED
@@ -1 +1 @@
1
- !function(){let e=require("terser-webpack-plugin"),{VueLoaderPlugin:t}=require("vue-loader"),o=require("path"),n=require("fs"),s=require("body-parser"),r=require("./makeIndex"),{makeRootIndex:i,makeSonIndex:a}=r,l=require("./plugin");function c(e,t){if(t.length<2)return;let s,r=t.filter(((t,r)=>(0===r&&(s=o.join(e,t),n.existsSync(s)||n.mkdirSync(s)),r>0)));c(s,r)}var u={entry:{},output:{filename:"[name].js"},watchOptions:{ignored:["node_modules","dist","debug"],poll:300},externals:{vue:"Vue","router-view":"VueRouter","element-plus":"ElementPlus"},performance:{maxEntrypointSize:512e3,maxAssetSize:512e3,hints:"warning"},plugins:[new t],module:{noParse:/Vue|jquery/,rules:[{test:/\.jsx?$/,exclude:/(node_modules|bower_components)/,use:{loader:"babel-loader",options:{cacheDirectory:!0,presets:[["@vue/app",{modules:"commonjs",loose:!0,useBuiltIns:"entry"}]],plugins:["@babel/plugin-syntax-jsx"]}}},{test:/\.vue$/,loader:"vue-loader"},{test:/\.css$/,use:["style-loader","css-loader"]},{test:/\.scss$/,use:["style-loader","css-loader",{loader:"sass-loader",options:{implementation:require("sass")}}]}]}};module.exports=({target:t,mode:r,ROOT:p,port:d,name:m,apps:h={}})=>{let g,f,y,v,b;const j={"/thor/":{target:"https://thor.zeto.me",secure:!1,changeOrigin:!0}};for(j["/"+m+"/"]={target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},"kooteam"!==m&&(j["/kooteam/"]={target:"https://kooteam.zeto.me",secure:!1,changeOrigin:!0}),Object.keys(h).forEach((e=>{let t=h[e]+"";-1===t.indexOf(":")&&(t="http://127.0.0.1:"+t),j["/"+e+"/"]={target:t,secure:!1,changeOrigin:!0}})),b=n.readdirSync(o.resolve(p,"src")),y=0,v=b.length;y<v;y++)f=b[y],-1!==f.indexOf(".js")&&(g=o.basename(f),g=g.substr(0,g.length-3),u.entry[g]=o.resolve(p,"src",f));return u.resolve={alias:{"@":o.resolve(p,"src")},extensions:[".js",".vue",".jsx",".json"]},u.mode=r,u.optimization=function(t){return"production"===t?{splitChunks:!1,minimize:!0,minimizer:[new e({parallel:!0,extractComments:!1,exclude:/node_modules/,terserOptions:{compress:{drop_console:!0,collapse_vars:!0,reduce_vars:!0,drop_debugger:!0},mangle:{reserved:["zen","$"]},output:{comments:!1,ascii_only:!0},sourceMap:!1,toplevel:!0,ie8:!1,keep_fnames:!1,safari10:!1}})]}:{}}(r),"development"===r?(u.cache={type:"memory"},u.devServer={open:!0,hot:!0,client:!1,host:"0.0.0.0",allowedHosts:"all",historyApiFallback:!0,onAfterSetupMiddleware:function(e){const{app:t}=e;t.use(s.json());const r=o.join(p,"src","pages");t.get("/coder.html",(function(e,t){return t.send(function(e){return`<!DOCTYPE html><html><head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="chrome,IE=edge"/> <meta name="HandheldFriendly" content="true"/><link rel="icon" href="data:image/ico;base64,aWNv"/><meta name="format-detection" content="telephone=no,email=no"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, user-scalable=no, minimal-ui, viewport-fit=cover"/> <meta name="renderer" content="webkit"/> <meta name="msapplication-tap-highlight" content="no"/> <title>云智低码引擎</title> <script src="//b.ebus.vip/zeto/latest/zen.js"><\/script> <link rel="stylesheet" type="text/css" href="//b.ebus.vip/zeto/latest/zen.css"> <script> window.coderHost = "https://thor.zeto.me";window.appName='${e}' <\/script></head><body><script src="https://b.ebus.vip/thor/v0.0.2/detail.js"><\/script></body></html>`}(m))})),t.post("/coder/read",(function(e,t){const{file:s,key:i}=e.body;if(!s)return t.json({code:10001,message:"参数错误"});const a=o.join(r,s);if(!n.existsSync(a))return t.json({code:1e4,data:null});let l={code:1e4,data:n.readFileSync(a,"utf-8")};t.json(l)})),t.post("/coder/write",(function(e,t){const{file:s,content:l,type:u}=e.body;if(!s)return t.json({code:10001,message:"参数错误"});const p=s.split("/");c(r,p);const d=o.join(r,s);if(n.writeFileSync(d,l),"page"===u){const e=p.splice(0,p.length-2),t=o.join(r,e.join(o.sep));if(0===e.length)return i(r);a(t,e.join("/"),r)}t.json({code:1e4,message:"操作成功"})}))},proxy:{"/api":{target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},"/do":{target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},...j},static:{directory:o.join(p,"public")},headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"*"}}):(u.devtool=!1,u.output.clean=!0,u.output.path=o.join(p,"dist")),u.plugins.push(new l(t)),u}}();
1
+ !function(){let e=require("terser-webpack-plugin"),{VueLoaderPlugin:t}=require("vue-loader"),o=require("path"),n=require("fs"),s=require("body-parser"),r=require("./makeIndex"),{makeRootIndex:i,makeSonIndex:a}=r,l=require("./plugin");function c(e,t){if(t.length<2)return;let s,r=t.filter(((t,r)=>(0===r&&(s=o.join(e,t),n.existsSync(s)||n.mkdirSync(s)),r>0)));c(s,r)}var u={entry:{},output:{filename:"[name].js"},watchOptions:{ignored:["node_modules","dist","debug"],poll:300},externals:{vue:"Vue","router-view":"VueRouter","element-plus":"ElementPlus"},performance:{maxEntrypointSize:512e3,maxAssetSize:512e3,hints:"warning"},plugins:[new t],module:{noParse:/Vue|jquery/,rules:[{test:/\.jsx?$/,exclude:/(node_modules|bower_components)/,use:{loader:"babel-loader",options:{cacheDirectory:!0,presets:[["@vue/app",{modules:"commonjs",loose:!0,useBuiltIns:"entry"}]],plugins:["@babel/plugin-syntax-jsx"]}}},{test:/\.vue$/,loader:"vue-loader"},{test:/\.css$/,use:["style-loader","css-loader"]},{test:/\.scss$/,use:["style-loader","css-loader",{loader:"sass-loader",options:{implementation:require("sass")}}]}]}};module.exports=({target:t,mode:r,ROOT:p,port:d,name:m,apps:h={}})=>{let g,f,y,v,b;const j={"/thor/":{target:"https://thor.zeto.me",secure:!1,changeOrigin:!0}};for(j["/"+m+"/"]={target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},"kooteam"!==m&&(j["/kooteam/"]={target:"https://kooteam.zeto.me",secure:!1,changeOrigin:!0}),Object.keys(h).forEach((e=>{let t=h[e]+"";-1===t.indexOf(":")&&(t="http://127.0.0.1:"+t),j["/"+e+"/"]={target:t,secure:!1,changeOrigin:!0}})),b=n.readdirSync(o.resolve(p,"src")),y=0,v=b.length;y<v;y++)f=b[y],-1!==f.indexOf(".js")&&(g=o.basename(f),g=g.substr(0,g.length-3),u.entry[g]=o.resolve(p,"src",f));if(u.resolve={alias:{"@":o.resolve(p,"src")},extensions:[".js",".vue",".jsx",".json"]},u.mode=r,u.optimization=function(t){return"production"===t?{splitChunks:!1,minimize:!0,minimizer:[new e({parallel:!0,extractComments:!1,exclude:/node_modules/,terserOptions:{compress:{drop_console:!0,collapse_vars:!0,reduce_vars:!0,drop_debugger:!0},mangle:{reserved:["zen","$"]},output:{comments:!1,ascii_only:!0},sourceMap:!1,toplevel:!0,ie8:!1,keep_fnames:!1,safari10:!1}})]}:{}}(r),"development"===r){const e="thor"!==m;u.cache={type:"memory"},u.devServer={open:!0,hot:e,client:!1,host:"0.0.0.0",allowedHosts:"all",historyApiFallback:!0,onAfterSetupMiddleware:function(e){const{app:t}=e;t.use(s.json());const r=o.join(p,"src","pages");t.get("/coder.html",(function(e,t){return t.send(function(e){return`<!DOCTYPE html><html><head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="chrome,IE=edge"/> <meta name="HandheldFriendly" content="true"/><link rel="icon" href="data:image/ico;base64,aWNv"/><meta name="format-detection" content="telephone=no,email=no"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, user-scalable=no, minimal-ui, viewport-fit=cover"/> <meta name="renderer" content="webkit"/> <meta name="msapplication-tap-highlight" content="no"/> <title>云智低码引擎</title> <script src="//b.ebus.vip/zeto/latest/zen.js"><\/script> <link rel="stylesheet" type="text/css" href="//b.ebus.vip/zeto/latest/zen.css"> <script> window.coderHost = "https://thor.zeto.me";window.appName='${e}' <\/script></head><body><script src="https://b.ebus.vip/thor/v0.0.2/detail.js"><\/script></body></html>`}(m))})),t.post("/coder/read",(function(e,t){const{file:s,key:i}=e.body;if(!s)return t.json({code:10001,message:"参数错误"});const a=o.join(r,s);if(!n.existsSync(a))return t.json({code:1e4,data:null});let l={code:1e4,data:n.readFileSync(a,"utf-8")};t.json(l)})),t.post("/coder/write",(function(e,t){const{file:s,content:l,type:u}=e.body;if(!s)return t.json({code:10001,message:"参数错误"});const p=s.split("/");c(r,p);const d=o.join(r,s);if(n.writeFileSync(d,l),"page"===u){const e=p.splice(0,p.length-2),t=o.join(r,e.join(o.sep));if(0===e.length)return i(r);a(t,e.join("/"),r)}t.json({code:1e4,message:"操作成功"})}))},proxy:{"/api":{target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},"/do":{target:"http://127.0.0.1:"+d,secure:!1,changeOrigin:!0},...j},static:{directory:o.join(p,"public")},headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"*"}}}else u.devtool=!1,u.output.clean=!0,u.output.path=o.join(p,"dist");return u.plugins.push(new l(t)),u}}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zen-app-plugin",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "app代码生成器",
5
5
  "main": "index.js",
6
6
  "author": "zen",