uudev 1.1.3 → 1.1.6
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.
- package/apptemplate/office/package.json +1 -2
- package/main.js +4 -4
- package/package.json +1 -1
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
"type": "module",
|
|
9
9
|
"scripts": {
|
|
10
10
|
"debug": "uudev debug",
|
|
11
|
+
"preview": "uudev preview",
|
|
11
12
|
"makezip": "uudev makezip",
|
|
12
|
-
"dev": "vite",
|
|
13
13
|
"build": "run-p type-check \"build-only {@}\" --",
|
|
14
|
-
"preview": "vite preview",
|
|
15
14
|
"build-only": "vite build",
|
|
16
15
|
"type-check": "vue-tsc --build",
|
|
17
16
|
"lint": "run-s lint:*",
|
package/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as
|
|
3
|
-
`,"utf8")}async function
|
|
4
|
-
"types": ${s},`);await c.promises.writeFile(n,a,"utf8")}}async function
|
|
5
|
-
`,"utf8")}async function
|
|
2
|
+
import{createRequire as Ae}from"module";import H from"fs";import _ from"path";import{fileURLToPath as Ce}from"url";import c from"fs";import l from"path";import J from"readline";import{spawn as M}from"child_process";import{fileURLToPath as X}from"url";var Q=X(import.meta.url),W=l.dirname(Q),P=[{key:"1",label:"Excel",value:"Excel",template:"office"},{key:"2",label:"Word",value:"Word",template:"office"},{key:"3",label:"Ppt",value:"Ppt",template:"office"}],L={Excel:"src_excel",Word:"src_word",Ppt:"src_ppt"},ee={Excel:["uudev/types/excel"],Word:["uudev/types/word"],Ppt:["uudev/types/ppt"]};async function te(){try{return(await import("chalk")).default}catch{return null}}async function ne(){try{return(await import("inquirer")).default}catch{return null}}function y(t){if(!t)return;let e=t.trim().toLowerCase(),n=P.find(o=>o.key===e);if(n)return n;let r=P.find(o=>o.label.toLowerCase()===e);if(r)return r}function re(t){let e=y(t);return e?e.template:String(t||"office").toLowerCase()}function I(t){return/^\d+\.\d+\.\d+$/.test(String(t||""))}function E(t,e){return new Promise(n=>{t.question(e,r=>n(r.trim()))})}async function oe(t={}){let e={...t},n=await te(),r=await ne();if(e.appType){let i=y(e.appType);i&&(e.appType=i.value)}if(e.name&&e.version&&e.appType)return e;let o=J.createInterface({input:process.stdin,output:process.stdout});try{if(!e.name){let i=await E(o,"\u8BF7\u8F93\u5165\u7A0B\u5E8F name: ");e.name=i}if(!e.version)for(;;){let s=await E(o,"\u8BF7\u8F93\u5165 version (\u9ED8\u8BA4 1.0.0): ")||"1.0.0";if(I(s)){e.version=s;break}let a="\u7248\u672C\u53F7\u683C\u5F0F\u9519\u8BEF\uFF0C\u4EC5\u652F\u6301 x.x.x\uFF0C\u4F8B\u5982 1.0.0\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\u3002";console.log(n?n.red(a):a)}}finally{o.close()}if(!e.appType)if(r){let i=await r.prompt([{type:"list",name:"appTypeSelection",message:"\u8BF7\u9009\u62E9 appType\uFF08\u4E0A\u4E0B\u65B9\u5411\u952E\u79FB\u52A8\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09",default:P[0].value,choices:P.map(s=>({name:s.label,value:s.value}))}]);e.appType=i.appTypeSelection}else{let i=n?n.cyan("\u8BF7\u9009\u62E9 appType:"):"\u8BF7\u9009\u62E9 appType:";console.log(i);for(let a of P){let p=n?`${n.green(a.key)}. ${n.yellow(a.label)}`:`${a.key}. ${a.label}`;console.log(p)}let s=J.createInterface({input:process.stdin,output:process.stdout});try{let a=await E(s,"\u8BF7\u8F93\u5165\u5E8F\u53F7\u6216\u540D\u79F0 (\u9ED8\u8BA4 1): "),p=y(a||"1");if(!p)throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");e.appType=p.value}finally{s.close()}}return e}function ie(t){if(!t.name)throw new Error("name \u4E0D\u80FD\u4E3A\u7A7A");if(/[\\/]/.test(t.name))throw new Error("name \u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26");if(!t.appType)throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");if(!y(t.appType))throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");if(!t.version)throw new Error("version \u4E0D\u80FD\u4E3A\u7A7A");if(!I(t.version))throw new Error("version \u4EC5\u652F\u6301 x.x.x \u683C\u5F0F\uFF0C\u4F8B\u5982 1.0.0")}async function x(t,e){let n=await c.promises.readdir(t,{withFileTypes:!0}),r=new Set(["node_modules","dist"]);await c.promises.mkdir(e,{recursive:!0});for(let o of n){if(o.isDirectory()&&r.has(o.name))continue;let i=l.join(t,o.name),s=l.join(e,o.name);o.isDirectory()?await x(i,s):await c.promises.copyFile(i,s)}}function se(t){let e=y(t);if(e)return L[e.value]}async function ae(t,e,n){let r=se(n);if(!r)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6E90\u7801\u76EE\u5F55: ${n}`);let o=await c.promises.readdir(t,{withFileTypes:!0}),i=new Set(Object.values(L));await c.promises.mkdir(e,{recursive:!0});for(let a of o){if(!a.isDirectory()){let u=l.join(t,a.name),h=l.join(e,a.name);await c.promises.copyFile(u,h);continue}if(i.has(a.name))continue;let p=l.join(t,a.name),g=l.join(e,a.name);await x(p,g)}let s=l.join(t,r);if(!c.existsSync(s))throw new Error(`\u6A21\u677F\u76EE\u5F55\u7F3A\u5C11 ${r}`);await x(s,l.join(e,"src"))}async function ce(t,e,n,r){let o=l.join(t,"package.json");if(!c.existsSync(o))return;let i=await c.promises.readFile(o,"utf8"),s=JSON.parse(i);s.name=e,s.version=n,s.appType=r,await c.promises.writeFile(o,`${JSON.stringify(s,null,2)}
|
|
3
|
+
`,"utf8")}async function pe(t,e){let n=l.join(t,"tsconfig.app.json");if(!c.existsSync(n))return;let r=y(e);if(!r)return;let o=ee[r.value];if(!o)return;let i=await c.promises.readFile(n,"utf8"),s=JSON.stringify(o);if(/"types"\s*:\s*\[[\s\S]*?\]/.test(i)){let a=i.replace(/"types"\s*:\s*\[[\s\S]*?\]/,`"types": ${s}`);await c.promises.writeFile(n,a,"utf8");return}if(/"compilerOptions"\s*:\s*\{/.test(i)){let a=i.replace(/"compilerOptions"\s*:\s*\{/,`"compilerOptions": {
|
|
4
|
+
"types": ${s},`);await c.promises.writeFile(n,a,"utf8")}}async function le(t){let e=l.join(t,"package-lock.json");c.existsSync(e)&&await c.promises.unlink(e)}function ue(t){return new Promise((e,n)=>{let r=process.platform==="win32"?M("cmd.exe",["/d","/s","/c","npm.cmd install"],{cwd:t,stdio:"inherit"}):M("npm",["install"],{cwd:t,stdio:"inherit"});r.on("error",o=>{n(o)}),r.on("close",o=>{if(o===0){e();return}n(new Error(`npm install \u6267\u884C\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${o}`))})})}async function R(t){let e=await oe(t||{}),n=y(e.appType||"Excel");n&&(e.appType=n.value),e.version=e.version||"1.0.0",ie(e);let r=l.join(process.cwd(),e.name),o=re(e.appType),s=[l.resolve(W,"..","apptemplate",o),l.resolve(W,"apptemplate",o)].find(a=>c.existsSync(a));if(!s)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6A21\u677F: ${e.appType}`);if(c.existsSync(r))throw new Error(`\u76EE\u5F55\u5DF2\u5B58\u5728: ${r}`);await c.promises.mkdir(r,{recursive:!0}),o==="office"?await ae(s,r,e.appType):await x(s,r),await ce(r,e.name,e.version,e.appType),await pe(r,e.appType),await le(r),console.log("\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56: npm install"),await ue(r),console.log(`\u521B\u5EFA\u6210\u529F: ${r}`)}import v from"fs";import T from"path";import{spawn as z}from"child_process";import fe from"archiver";function me(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function k(t,e,n){return new Promise((r,o)=>{let i=process.platform==="win32"?z("cmd.exe",["/d","/s","/c",[t,...e].map(me).join(" ")],{cwd:n,stdio:"inherit"}):z(t,e,{cwd:n,stdio:"inherit"});i.on("error",s=>{o(s)}),i.on("close",s=>{if(s===0){r();return}o(new Error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${t} ${e.join(" ")}`))})})}async function de(t){let e=T.join(t,"package.json");if(!v.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await v.promises.readFile(e,"utf8"),r=JSON.parse(n);if(!r.name)throw new Error("package.json \u7F3A\u5C11 name \u5B57\u6BB5");if(!r.version)throw new Error("package.json \u7F3A\u5C11 version \u5B57\u6BB5");return r}async function we(t,e,n){return new Promise((r,o)=>{let i=v.createWriteStream(e),s=fe("zip",{zlib:{level:9}});i.on("close",()=>r()),i.on("error",a=>o(a)),s.on("error",a=>o(a)),s.pipe(i),s.glob("**/*",{cwd:t,dot:!0,ignore:[n]}),s.finalize()})}async function ge(t,e){let n=T.join(t,"menifest.json");if(!v.existsSync(n))throw new Error(`\u672A\u627E\u5230 menifest.json: ${n}`);let r=await v.promises.readFile(n,"utf8"),o=JSON.parse(r);o.name=e.name,o.version=e.version,e.description&&(o.description=e.description,o.note=e.description),await v.promises.writeFile(n,`${JSON.stringify(o,null,2)}
|
|
5
|
+
`,"utf8")}async function V(){let t=process.cwd(),e=await de(t),n=T.join(t,"dist"),r=`${e.name}_${e.version}.zip`,o=T.join(n,r),i=process.platform==="win32"?"npm.cmd":"npm";if(console.log("\u5F00\u59CB\u6267\u884C\u6784\u5EFA: npm run build"),await k(i,["run","build"],t),!v.existsSync(n))throw new Error("\u6784\u5EFA\u5B8C\u6210\u540E\u672A\u627E\u5230 dist \u76EE\u5F55");console.log("\u5F00\u59CB\u540C\u6B65 menifest.json \u5B57\u6BB5"),await ge(n,e),console.log(`\u5F00\u59CB\u6253\u5305 dist: ${r}`),await we(n,o,r),console.log(`\u53D1\u5E03\u5305\u751F\u6210\u6210\u529F: ${o}`)}import b from"fs";import ye from"path";import{spawn as $,spawnSync as ve}from"child_process";var he={excel:"{00024500-0000-0000-C000-000000000046}",word:"{000209FF-0000-0000-C000-000000000046}",ppt:"{91493441-5A91-11CF-8700-00AA0060263B}"};function A(t){let e=String(t||"").trim().toLowerCase();if(e==="excel")return"excel";if(e==="word")return"word";if(e==="ppt"||e==="powerpoint")return"ppt";throw new Error(`\u4E0D\u652F\u6301\u7684 appType: ${t||"(\u7A7A)"}\uFF0C\u4EC5\u652F\u6301 Excel/Word/Ppt`)}async function C(t){let e=ye.join(t,"package.json");if(!b.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await b.promises.readFile(e,"utf8"),r=JSON.parse(n);if(!r.appType)throw new Error("package.json \u7F3A\u5C11 appType \u5B57\u6BB5");return r}function Pe(t){let e=["inherit","pipe","pipe"];return process.platform==="win32"?$("cmd.exe",["/c","npx","vite"],{cwd:t,stdio:e}):$("npx",["vite"],{cwd:t,stdio:e})}function xe(t){return t.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function Te(t){let e=xe(t).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!e)return null;let n=Number.parseInt(e,10);return!Number.isInteger(n)||n<=0||n>65535?null:n}async function Se(t,e=3e4){return new Promise((n,r)=>{let o=!1,i=f=>u(()=>r(f)),s=f=>{u(()=>r(new Error(`\u672A\u89E3\u6790\u5230\u672C\u5730\u670D\u52A1\u7AEF\u53E3\uFF0Cuudev debug\u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${f}`)))},a=f=>h(f,process.stdout),p=f=>h(f,process.stderr),g=()=>{t.off("error",i),t.off("close",s),t.stdout?.off("data",a),t.stderr?.off("data",p)},u=f=>{o||(o=!0,clearTimeout(D),g(),f())},h=(f,d)=>{d.write(f);let w=Te(f.toString("utf8"));w!==null&&u(()=>n(w))};t.on("error",i),t.on("close",s),t.stdout?.on("data",a),t.stderr?.on("data",p);let D=setTimeout(()=>{u(()=>r(new Error(`\u7B49\u5F85\u672C\u5730\u670D\u52A1\u7AEF\u53E3\u8D85\u65F6\uFF08${e}ms\uFF09`)))},e)})}function Ee(t){let e=ve("reg",["query",t,"/ve"],{encoding:"utf8"});if(e.status!==0)return null;let r=`${e.stdout||""}`.split(/\r?\n/).find(i=>/REG_SZ|REG_EXPAND_SZ/i.test(i));if(!r)return null;let o=r.match(/REG_(?:SZ|EXPAND_SZ)\s+(.+)$/i);return!o||!o[1]?null:o[1].trim()}function ke(t){return t.replace(/%([^%]+)%/g,(e,n)=>process.env[n]||`%${n}%`)}function be(t){let e=ke(t.trim());if(e.startsWith('"')){let r=e.indexOf('"',1);if(r>1)return e.slice(1,r)}let n=e.match(/^(.+?\.exe)/i);return n&&n[1]?n[1].trim():e}function O(t){let e=he[t],n=[`HKCR\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\Classes\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\WOW6432Node\\Classes\\CLSID\\${e}\\LocalServer32`];for(let r of n){let o=Ee(r);if(!o)continue;let i=be(o);if(i&&b.existsSync(i))return i}throw new Error(`\u65E0\u6CD5\u901A\u8FC7 CLSID \u5B9A\u4F4D ${t} \u5B89\u88C5\u8DEF\u5F84\uFF0C\u8BF7\u68C0\u67E5 Office \u662F\u5426\u5DF2\u5B89\u88C5`)}function j(t,e){$(t,[e],{detached:!0,stdio:"ignore"}).unref()}async function q(){if(process.platform!=="win32")throw new Error("debug \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=Pe(t);await new Promise((p,g)=>{e.once("error",u=>g(u)),e.once("spawn",()=>p())}),console.log("\u8C03\u8BD5\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u6B63\u5728\u8BFB\u53D6 appType \u5E76\u542F\u52A8 Office...");let n=await C(t),r=A(n.appType),o=O(r),a=`--uudev-debug=${`http://127.0.0.1:${await Se(e)}`}`;console.log(`\u5DF2\u8BC6\u522B appType: ${n.appType}`),console.log(`\u542F\u52A8 Office: ${o} ${a}`),j(o,a),await new Promise((p,g)=>{e.on("close",u=>{if(u===0||u===null){p();return}g(new Error(`uudev debug\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${u}`))})})}import B from"fs";import U from"path";import{spawn as $e}from"child_process";async function Z(){if(process.platform!=="win32")throw new Error("preview \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=U.join(t,"dist"),n=!1;if(B.existsSync(e)?(await B.promises.readdir(e)).length===0&&(n=!0):n=!0,n){let d=process.platform==="win32"?"npm.cmd":"npm";await k(d,["run","build"],t)}let r=U.resolve(t),o=process.platform==="win32"?`npx.cmd vite preview --host=127.0.0.1 --outDir="${r}"`:`npx vite preview --host=127.0.0.1 --outDir="${r}"`,i=$e(o,{cwd:t,stdio:["ignore","pipe","pipe"],shell:!0});function s(d){return d.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function a(d){let w=s(d).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!w)return null;let m=Number.parseInt(w,10);return!Number.isInteger(m)||m<=0||m>65535?null:m}let p=await new Promise((d,w)=>{let m=!1,F=S=>{let G=S.toString("utf8"),N=a(G);N&&!m&&(m=!0,d(N))};i.stdout?.on("data",F),i.stderr?.on("data",F),i.on("error",w),i.on("close",S=>{m||w(new Error(`uudev preview \u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${S}`))}),setTimeout(()=>{m||w(new Error("\u7B49\u5F85 uudev preview \u7AEF\u53E3\u8D85\u65F6"))},2e4)}),g=await C(t),u=A(g.appType),h=O(u),f=`--uudev-debug=${`http://127.0.0.1:${p}/dist/index.html`}`;j(h,f),await new Promise((d,w)=>{i.on("close",m=>{m===0||m===null?d(void 0):w(new Error(`uudev preview\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${m}`))})})}var ut=Ae(import.meta.url);function Oe(){let t=_.dirname(Ce(import.meta.url)),e=[_.resolve(t,"package.json"),_.resolve(t,"../package.json")];for(let n of e)if(H.existsSync(n))try{let r=JSON.parse(H.readFileSync(n,"utf8"));if(r?.version)return r.version}catch{}return"0.0.0"}var Y=Oe();async function je(){try{return(await import("chalk")).default}catch{return null}}function K(){console.log(`uudev v${Y}`),console.log(""),console.log("uudev <command> [options]"),console.log(""),console.log("Commands:"),console.log(" create"),console.log(" \u521B\u5EFAuuapp\u9879\u76EE, \u4F1A\u8FDB\u5165\u4EA4\u4E92\u5F0F\u5411\u5BFC\uFF0C\u5E2E\u52A9\u4F60\u5B8C\u6210\u9879\u76EE\u521B\u5EFA"),console.log(" debug"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run debug\uFF0C\u5E76\u6309 appType \u542F\u52A8 Office"),console.log(" preview"),console.log(" \u6784\u5EFA\u5E76 vite preview \u5F53\u524D\u9879\u76EE\uFF0C\u81EA\u52A8\u542F\u52A8 Office \u5E76\u4F20\u9012\u8C03\u8BD5\u53C2\u6570"),console.log(" makezip"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run makezip\uFF0C\u5E76\u5C06 dist \u76EE\u5F55\u5185\u5BB9\u6253\u5305\u4E3A appName_version.zip"),console.log(" --help, -h"),console.log(" \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"),console.log(" --version, -v"),console.log(" \u663E\u793A\u7248\u672C\u4FE1\u606F"),console.log(""),console.log("AppType options: Excel | Word | Ppt"),console.log("Version format : x.x.x (\u4F8B\u5982 1.0.0)")}function _e(){console.log(`uudev v${Y}`)}async function De(){let t=process.argv[2],e=await je();if(!t||t==="--help"||t==="-h"||t==="help"){K();return}if(t==="--version"||t==="-v"||t==="version"){_e();return}if(t==="create"){if(process.argv.length>3){let n="create \u547D\u4EE4\u4F1A\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF0C\u5DF2\u8FDB\u5165\u521B\u5EFA\u5411\u5BFC\u3002";console.log(e?e.yellow(n):n)}await R();return}if(t==="makezip"){await V();return}if(t==="debug"){await q();return}if(t==="preview"){await Z();return}K()}De().catch(t=>{console.error(`\u6267\u884C\u5931\u8D25: ${t.message}`),process.exit(1)});
|