@oiyo/cli 0.1.1 → 0.2.0
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/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +2 -2
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @oiyo/cli v0.
|
|
2
|
+
* @oiyo/cli v0.2.0
|
|
3
3
|
* Copyright (c) 2026 skiyee. All rights reserved.
|
|
4
4
|
* Commercial software. See LICENSE for terms.
|
|
5
5
|
* Official site: https://oiyo.js.org
|
|
6
6
|
*/
|
|
7
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`citty`),l=require(`node:process`);l=s(l);let u=require(`@clack/prompts`);u=s(u);let d=require(`node:fs`),f=require(`node:fs/promises`),p=require(`@oiyo/config`),m=require(`@oiyo/core`),h=require(`ansis`),g=require(`c12`),_=require(`node:module`),v=require(`pathe`),y=require(`execa`),b=require(`node:buffer`),x=require(`node:child_process`),S=require(`node:os`);S=s(S);const C={h5:`H5`,"mp-weixin":`微信小程序`,"mp-alipay":`支付宝小程序`,"mp-toutiao":`抖音小程序`,"mp-xhs":`小红书小程序`,"mp-harmony":`鸿蒙小程序`,"mp-jd":`京东小程序`,"mp-kuaishou":`快手小程序`,"mp-lark":`飞书小程序`,"mp-baidu":`百度小程序`,"mp-qq":`QQ 小程序`,"quickapp-webview":`快应用 WebView`,"quickapp-webview-huawei":`华为快应用 WebView`,"quickapp-webview-union":`联盟快应用 WebView`,app:`App`,"app-android":`App Android`,"app-ios":`App iOS`,"app-harmony":`App Harmony`},w=Object.keys(C);async function T(){let e=await u.select({message:`请选择开发目标平台`,options:w.map(e=>({label:C[e],value:e,hint:e}))});return u.isCancel(e)?(u.cancel(`已取消平台选择`),null):e}function E(e){return(0,v.normalize)((0,_.createRequire)(require(`url`).pathToFileURL(__filename).href).resolve(e))}const D={logLevel:{type:`enum`,description:`日志级别: silent | info | verbose`,options:[`silent`,`info`,`verbose`]}};let O=!1;async function k(){let e=`未知`,t=`未知`,n=`未知`,r=E(`@oiyo/framework/package.json`);if((0,d.existsSync)(r)){let i=JSON.parse(await(0,f.readFile)(r,`utf8`));e=i.version,t=i.dependencies[`@dcloudio/uni-app`],n=i.dependencies.vue}console.log(`${(0,h.blue)(`oiyo v${e}`)} powered by ${(0,h.hex)(`#2B9939`)`uni-app(v${t})`} ${(0,h.hex)(`#42b983`)`vue(v${n})`}`)}function A(){return{name:`oiyo:context`,async setup(e){O||=(await k(),!0);let t=e.args.logLevel,{config:n}=await(0,g.loadConfig)({name:`oiyo`}),r=(0,p.resolveOiyoConfig)(n);e.data={logger:(0,m.createLogger)(t),config:r}}}}const j=(0,c.defineCommand)({meta:{name:`prepare`,description:`执行 Oiyo 准备阶段`},plugins:[A],args:{...D},async run({data:e}){let{logger:t,config:n}=e,r=t.withScope(`PREPARE`);try{let e=E(`@dcloudio/vite-plugin-uni/dist/utils/plugin.js`);if(!(0,d.existsSync)(e))return;let t=(0,d.readFileSync)(e,`utf-8`),{dir:n}=(0,v.parse)((0,v.dirname)(E(`@oiyo/framework`)));(0,d.writeFileSync)(e,M(t,n))}catch(e){r.error(`初始化失败,请移除 node_modules 并重新安装依赖!\n\n${e.message}`)}let i=new m.OiyoState(n),a=new m.
|
|
7
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`citty`),l=require(`node:process`);l=s(l);let u=require(`@clack/prompts`);u=s(u);let d=require(`node:fs`),f=require(`node:fs/promises`),p=require(`@oiyo/config`),m=require(`@oiyo/core`),h=require(`ansis`),g=require(`c12`),_=require(`node:module`),v=require(`pathe`),y=require(`execa`),b=require(`node:buffer`),x=require(`node:child_process`),S=require(`node:os`);S=s(S);const C={h5:`H5`,"mp-weixin":`微信小程序`,"mp-alipay":`支付宝小程序`,"mp-toutiao":`抖音小程序`,"mp-xhs":`小红书小程序`,"mp-harmony":`鸿蒙小程序`,"mp-jd":`京东小程序`,"mp-kuaishou":`快手小程序`,"mp-lark":`飞书小程序`,"mp-baidu":`百度小程序`,"mp-qq":`QQ 小程序`,"quickapp-webview":`快应用 WebView`,"quickapp-webview-huawei":`华为快应用 WebView`,"quickapp-webview-union":`联盟快应用 WebView`,app:`App`,"app-android":`App Android`,"app-ios":`App iOS`,"app-harmony":`App Harmony`},w=Object.keys(C);async function T(){let e=await u.select({message:`请选择开发目标平台`,options:w.map(e=>({label:C[e],value:e,hint:e}))});return u.isCancel(e)?(u.cancel(`已取消平台选择`),null):e}function E(e){return(0,v.normalize)((0,_.createRequire)(require(`url`).pathToFileURL(__filename).href).resolve(e))}const D={logLevel:{type:`enum`,description:`日志级别: silent | info | verbose`,options:[`silent`,`info`,`verbose`]}};let O=!1;async function k(){let e=`未知`,t=`未知`,n=`未知`,r=E(`@oiyo/framework/package.json`);if((0,d.existsSync)(r)){let i=JSON.parse(await(0,f.readFile)(r,`utf8`));e=i.version,t=i.dependencies[`@dcloudio/uni-app`],n=i.dependencies.vue}console.log(`${(0,h.blue)(`oiyo v${e}`)} powered by ${(0,h.hex)(`#2B9939`)`uni-app(v${t})`} ${(0,h.hex)(`#42b983`)`vue(v${n})`}`)}function A(){return{name:`oiyo:context`,async setup(e){O||=(await k(),!0);let t=e.args.logLevel,{config:n}=await(0,g.loadConfig)({name:`oiyo`}),r=(0,p.resolveOiyoConfig)(n);e.data={logger:(0,m.createLogger)(t),config:r}}}}const j=(0,c.defineCommand)({meta:{name:`prepare`,description:`执行 Oiyo 准备阶段`},plugins:[A],args:{...D},async run({data:e}){let{logger:t,config:n}=e,r=t.withScope(`PREPARE`);try{let e=E(`@dcloudio/vite-plugin-uni/dist/utils/plugin.js`);if(!(0,d.existsSync)(e))return;let t=(0,d.readFileSync)(e,`utf-8`),{dir:n}=(0,v.parse)((0,v.dirname)(E(`@oiyo/framework`)));(0,d.writeFileSync)(e,M(t,n))}catch(e){r.error(`初始化失败,请移除 node_modules 并重新安装依赖!\n\n${e.message}`)}let i=new m.OiyoState(n),a=new m.OiyoModComponent(n,{logger:t,oiyoState:i}),o=new m.OiyoModApi(n,{logger:t,oiyoState:i}),s=new m.OiyoModRoot(n,{logger:t,oiyoAutoApi:o}),c=new m.OiyoModLayout(n,{logger:t,oiyoState:i}),l=new m.OiyoModRoute(n,{logger:t.withScope(`ROUTE`),oiyoState:i,oiyoRoot:s,oiyoLayout:c});await Promise.all([l.loadPagesConfig(),a.collectComponents(),o.collectApis(),c.registerLayouts()]),a.writeDeclaration(),o.writeDeclaration(),c.writeDeclaration(),await l.registerPages(),l.writePagesJson(),i.writeDeclarationEntry(),i.markGenerated()}});function M(e,t){let n=`const isOiyoPluginEnabled = process.env.OIYO_PLUGIN || true;\nconst oiyoRoot = "${t}";\nif(isOiyoPluginEnabled && oiyoRoot){\ncliRoot = oiyoRoot\n}\nconst pkg = require(path_1.default.join(cliRoot, "package.json"));`;return e.replace(`const pkg = require(path_1.default.join(cliRoot, 'package.json'));`,n)}async function N(e,t){t.info(`正在调起微信开发者工具`);let n=await P(e.ide?.path?.[`mp-weixin`]);if(!n){t.warn(`未找到微信开发者工具路径,请在 oiyo.config.ts 中配置 ide.path["mp-weixin"]`);return}let r=(0,v.join)(e.rootDir||l.default.cwd(),`dist`,`dev`,`mp-weixin`);await I(r);let i=await(0,y.execa)(n,[`open`,`--project`,r],{reject:!1,windowsHide:!0});t.info(`微信开发者工具已准备就绪`),i.exitCode!==0&&t.warn(`微信开发者工具打开失败,请检查开发者工具服务端口是否已开启`)}async function P(e){if(e)return await B(e)?e:null;let t=L();if(t&&await B(t))return t;let n=R();if(n&&await B(n))return n;let r=F(l.default.platform,l.default.env,S.default.homedir());for(let e of r)if(await B(e))return e;return null}function F(e,t,n){return e===`win32`?[v.win32.join(t[`ProgramFiles(x86)`]||``,`Tencent`,`微信web开发者工具`,`cli.bat`),v.win32.join(t.ProgramFiles||``,`Tencent`,`微信web开发者工具`,`cli.bat`),v.win32.join(t.ProgramW6432||``,`Tencent`,`微信web开发者工具`,`cli.bat`),v.win32.join(t.LOCALAPPDATA||``,`Tencent`,`微信web开发者工具`,`cli.bat`)].filter(Boolean):e===`darwin`?[v.posix.join(`/Applications`,`wechatwebdevtools.app`,`Contents`,`MacOS`,`cli`),v.posix.join(`/Applications`,`微信开发者工具.app`,`Contents`,`MacOS`,`cli`),v.posix.join(n,`Applications`,`wechatwebdevtools.app`,`Contents`,`MacOS`,`cli`),v.posix.join(n,`Applications`,`微信开发者工具.app`,`Contents`,`MacOS`,`cli`)]:[]}async function I(e){let t=(0,v.join)(e,`project.config.json`);await B(t)||(await(0,f.mkdir)(e,{recursive:!0}),await(0,f.writeFile)(t,`${JSON.stringify({appid:`touristappid`,projectname:`oiyo`},null,2)}\n`,`utf8`))}function L(){if(l.default.platform!==`win32`)return null;let e=[`$paths = @('HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*', 'HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*')`,`$target = '*微信开发者工具*'`,`foreach ($path in $paths) {`,` Get-ItemProperty $path -ErrorAction SilentlyContinue |`,` Where-Object { $_.DisplayName -like $target } |`,` ForEach-Object {`,` if ($_.InstallLocation) {`,` $value = Join-Path $_.InstallLocation 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` exit`,` }`,` if ($_.DisplayIcon) {`,` $value = Join-Path (Split-Path $_.DisplayIcon -Parent) 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` exit`,` }`,` }`,`}`].join(`; `);try{return z(e)||null}catch{return null}}function R(){if(l.default.platform!==`win32`)return null;let e=[`$path = 'HKCU:\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Compatibility Assistant\\Store'`,`$items = Get-ItemProperty $path -ErrorAction SilentlyContinue`,`if ($items) {`,` $match = $items.PSObject.Properties | Where-Object { $_.Name -like '*微信开发者工具.exe' } | Select-Object -First 1`,` if ($match) {`,` $value = Join-Path (Split-Path $match.Name -Parent) 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` }`,`}`].join(`; `);try{return z(e)}catch{return null}}function z(e){try{let t=(0,x.execFileSync)(`powershell`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,b.Buffer.from(e,`utf16le`).toString(`base64`)],{stdio:[`ignore`,`pipe`,`ignore`],windowsHide:!0}).toString(`utf8`).trim();return t&&b.Buffer.from(t,`base64`).toString(`utf8`).trim()||null}catch{return null}}async function B(e){if(!e)return!1;try{return await(0,f.access)(e,d.constants.F_OK),!0}catch{return!1}}async function V(e,t,n){let r=n.withScope(`IDE`);switch(e){case`mp-weixin`:await N(t,r);break;default:r.info(`请手动打开开发者工具,导入 ${(0,h.blue)(e)} 产物运行`);break}}const H=(0,c.defineCommand)({args:{mode:{type:`positional`,description:`运行模式`,required:!0},platform:{type:`string`,description:`通过参数显式指定平台`,required:!0}},async run({args:e,data:t}){let{config:n,logger:r}=t,i={...l.default.env,OIYO_UNI_CALLED:`1`},a=U([e.mode,`-p`,e.platform],{env:i});for await(let t of a)if(!t.startsWith(`请注意运行模式下`)&&!t.startsWith(`uni-app 有新版本发布`)){if(e.platform.startsWith(`mp`)&&n.ide?.open&&t.startsWith(`运行方式`)){await V(e.platform,n,r);continue}l.default.stdout.write(`${t}\n`)}}});function U(e,t){let n=W();return(0,y.execa)(l.default.execPath,[n,...e],{stdout:[`pipe`],stderr:[`pipe`,`inherit`],reject:!1,env:t?.env})}function W(){try{return E(`@dcloudio/vite-plugin-uni/bin/uni.js`)}catch(e){throw Error(`[oiyo] 未找到真实的 UNIAPP CLI,请移除 node_modules 重新安装依赖`,{cause:e})}}const G=(0,c.defineCommand)({meta:{name:`build`,description:`启动 Oiyo 构建流程`},plugins:[A],args:{target:{type:`positional`,description:`目标平台,如 h5、mp-weixin、app`,required:!1},platform:{type:`string`,description:`通过参数显式指定平台`,alias:[`p`]},...D},async run({args:e,data:t}){let{logger:n,config:r}=t,i=e.target??e.platform??e.p??await T();i||l.default.exit(0);let a=n.withScope(`CLI`);w.includes(i)||(a.error(`不支持的平台:${i}\n可选平台:${w.join(`, `)}`),l.default.exit(0)),await(0,c.runCommand)(j,{rawArgs:e.logLevel?[`--logLevel`,e.logLevel]:[]}),await(0,c.runCommand)(H,{rawArgs:[`build`,`--platform`,i],data:{logger:n,config:r}})}}),K=(0,c.defineCommand)({meta:{name:`dev`,description:`启动 Oiyo 开发流程`},plugins:[A],args:{target:{type:`positional`,description:`目标平台,如 h5、mp-weixin、app`,required:!1},platform:{type:`string`,description:`通过参数显式指定平台`,alias:[`p`]},...D},async run({args:e,data:t}){let{logger:n,config:r}=t,i=e.target??e.platform??e.p??await T();i||l.default.exit(0);let a=n.withScope(`CLI`);w.includes(i)||(a.error(`不支持的平台:${i}\n可选平台:${w.join(`, `)}`),l.default.exit(0)),await(0,c.runCommand)(j,{rawArgs:e.logLevel?[`--logLevel`,e.logLevel]:[]}),await(0,c.runCommand)(H,{rawArgs:[`dev`,`--platform`,i],data:{logger:n,config:r}})}});(0,c.runMain)((0,c.defineCommand)({meta:{name:`oiyo`,version:`1.0.0`,description:`Oiyo CLI - 增强型工程框架`},subCommands:{prepare:j,dev:K,build:G}}));
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.mts
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @oiyo/cli v0.
|
|
2
|
+
* @oiyo/cli v0.2.0
|
|
3
3
|
* Copyright (c) 2026 skiyee. All rights reserved.
|
|
4
4
|
* Commercial software. See LICENSE for terms.
|
|
5
5
|
* Official site: https://oiyo.js.org
|
|
6
6
|
*/
|
|
7
|
-
import{createRequire as e}from"node:module";import{defineCommand as t,runCommand as n,runMain as r}from"citty";import i from"node:process";import*as a from"@clack/prompts";import{constants as o,existsSync as s,readFileSync as c,writeFileSync as l}from"node:fs";import{access as u,mkdir as d,readFile as f,writeFile as p}from"node:fs/promises";import{resolveOiyoConfig as m}from"@oiyo/config";import{
|
|
7
|
+
import{createRequire as e}from"node:module";import{defineCommand as t,runCommand as n,runMain as r}from"citty";import i from"node:process";import*as a from"@clack/prompts";import{constants as o,existsSync as s,readFileSync as c,writeFileSync as l}from"node:fs";import{access as u,mkdir as d,readFile as f,writeFile as p}from"node:fs/promises";import{resolveOiyoConfig as m}from"@oiyo/config";import{OiyoModApi as h,OiyoModComponent as g,OiyoModLayout as _,OiyoModRoot as v,OiyoModRoute as y,OiyoState as b,createLogger as x}from"@oiyo/core";import{blue as S,hex as C}from"ansis";import{loadConfig as w}from"c12";import{dirname as T,join as E,normalize as D,parse as ee,posix as O,win32 as k}from"pathe";import{execa as A}from"execa";import{Buffer as j}from"node:buffer";import{execFileSync as M}from"node:child_process";import N from"node:os";const P={h5:`H5`,"mp-weixin":`微信小程序`,"mp-alipay":`支付宝小程序`,"mp-toutiao":`抖音小程序`,"mp-xhs":`小红书小程序`,"mp-harmony":`鸿蒙小程序`,"mp-jd":`京东小程序`,"mp-kuaishou":`快手小程序`,"mp-lark":`飞书小程序`,"mp-baidu":`百度小程序`,"mp-qq":`QQ 小程序`,"quickapp-webview":`快应用 WebView`,"quickapp-webview-huawei":`华为快应用 WebView`,"quickapp-webview-union":`联盟快应用 WebView`,app:`App`,"app-android":`App Android`,"app-ios":`App iOS`,"app-harmony":`App Harmony`},F=Object.keys(P);async function I(){let e=await a.select({message:`请选择开发目标平台`,options:F.map(e=>({label:P[e],value:e,hint:e}))});return a.isCancel(e)?(a.cancel(`已取消平台选择`),null):e}function L(t){return D(e(import.meta.url).resolve(t))}const R={logLevel:{type:`enum`,description:`日志级别: silent | info | verbose`,options:[`silent`,`info`,`verbose`]}};let z=!1;async function B(){let e=`未知`,t=`未知`,n=`未知`,r=L(`@oiyo/framework/package.json`);if(s(r)){let i=JSON.parse(await f(r,`utf8`));e=i.version,t=i.dependencies[`@dcloudio/uni-app`],n=i.dependencies.vue}console.log(`${S(`oiyo v${e}`)} powered by ${C(`#2B9939`)`uni-app(v${t})`} ${C(`#42b983`)`vue(v${n})`}`)}function V(){return{name:`oiyo:context`,async setup(e){z||=(await B(),!0);let t=e.args.logLevel,{config:n}=await w({name:`oiyo`}),r=m(n);e.data={logger:x(t),config:r}}}}const H=t({meta:{name:`prepare`,description:`执行 Oiyo 准备阶段`},plugins:[V],args:{...R},async run({data:e}){let{logger:t,config:n}=e,r=t.withScope(`PREPARE`);try{let e=L(`@dcloudio/vite-plugin-uni/dist/utils/plugin.js`);if(!s(e))return;let t=c(e,`utf-8`),{dir:n}=ee(T(L(`@oiyo/framework`)));l(e,U(t,n))}catch(e){r.error(`初始化失败,请移除 node_modules 并重新安装依赖!\n\n${e.message}`)}let i=new b(n),a=new g(n,{logger:t,oiyoState:i}),o=new h(n,{logger:t,oiyoState:i}),u=new v(n,{logger:t,oiyoAutoApi:o}),d=new _(n,{logger:t,oiyoState:i}),f=new y(n,{logger:t.withScope(`ROUTE`),oiyoState:i,oiyoRoot:u,oiyoLayout:d});await Promise.all([f.loadPagesConfig(),a.collectComponents(),o.collectApis(),d.registerLayouts()]),a.writeDeclaration(),o.writeDeclaration(),d.writeDeclaration(),await f.registerPages(),f.writePagesJson(),i.writeDeclarationEntry(),i.markGenerated()}});function U(e,t){let n=`const isOiyoPluginEnabled = process.env.OIYO_PLUGIN || true;\nconst oiyoRoot = "${t}";\nif(isOiyoPluginEnabled && oiyoRoot){\ncliRoot = oiyoRoot\n}\nconst pkg = require(path_1.default.join(cliRoot, "package.json"));`;return e.replace(`const pkg = require(path_1.default.join(cliRoot, 'package.json'));`,n)}async function W(e,t){t.info(`正在调起微信开发者工具`);let n=await G(e.ide?.path?.[`mp-weixin`]);if(!n){t.warn(`未找到微信开发者工具路径,请在 oiyo.config.ts 中配置 ide.path["mp-weixin"]`);return}let r=E(e.rootDir||i.cwd(),`dist`,`dev`,`mp-weixin`);await q(r);let a=await A(n,[`open`,`--project`,r],{reject:!1,windowsHide:!0});t.info(`微信开发者工具已准备就绪`),a.exitCode!==0&&t.warn(`微信开发者工具打开失败,请检查开发者工具服务端口是否已开启`)}async function G(e){if(e)return await Z(e)?e:null;let t=J();if(t&&await Z(t))return t;let n=Y();if(n&&await Z(n))return n;let r=K(i.platform,i.env,N.homedir());for(let e of r)if(await Z(e))return e;return null}function K(e,t,n){return e===`win32`?[k.join(t[`ProgramFiles(x86)`]||``,`Tencent`,`微信web开发者工具`,`cli.bat`),k.join(t.ProgramFiles||``,`Tencent`,`微信web开发者工具`,`cli.bat`),k.join(t.ProgramW6432||``,`Tencent`,`微信web开发者工具`,`cli.bat`),k.join(t.LOCALAPPDATA||``,`Tencent`,`微信web开发者工具`,`cli.bat`)].filter(Boolean):e===`darwin`?[O.join(`/Applications`,`wechatwebdevtools.app`,`Contents`,`MacOS`,`cli`),O.join(`/Applications`,`微信开发者工具.app`,`Contents`,`MacOS`,`cli`),O.join(n,`Applications`,`wechatwebdevtools.app`,`Contents`,`MacOS`,`cli`),O.join(n,`Applications`,`微信开发者工具.app`,`Contents`,`MacOS`,`cli`)]:[]}async function q(e){let t=E(e,`project.config.json`);await Z(t)||(await d(e,{recursive:!0}),await p(t,`${JSON.stringify({appid:`touristappid`,projectname:`oiyo`},null,2)}\n`,`utf8`))}function J(){if(i.platform!==`win32`)return null;let e=[`$paths = @('HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*', 'HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*')`,`$target = '*微信开发者工具*'`,`foreach ($path in $paths) {`,` Get-ItemProperty $path -ErrorAction SilentlyContinue |`,` Where-Object { $_.DisplayName -like $target } |`,` ForEach-Object {`,` if ($_.InstallLocation) {`,` $value = Join-Path $_.InstallLocation 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` exit`,` }`,` if ($_.DisplayIcon) {`,` $value = Join-Path (Split-Path $_.DisplayIcon -Parent) 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` exit`,` }`,` }`,`}`].join(`; `);try{return X(e)||null}catch{return null}}function Y(){if(i.platform!==`win32`)return null;let e=[`$path = 'HKCU:\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Compatibility Assistant\\Store'`,`$items = Get-ItemProperty $path -ErrorAction SilentlyContinue`,`if ($items) {`,` $match = $items.PSObject.Properties | Where-Object { $_.Name -like '*微信开发者工具.exe' } | Select-Object -First 1`,` if ($match) {`,` $value = Join-Path (Split-Path $match.Name -Parent) 'cli.bat'`,` $bytes = [System.Text.Encoding]::UTF8.GetBytes($value)`,` Write-Output ([Convert]::ToBase64String($bytes))`,` }`,`}`].join(`; `);try{return X(e)}catch{return null}}function X(e){try{let t=M(`powershell`,[`-NoProfile`,`-ExecutionPolicy`,`Bypass`,`-EncodedCommand`,j.from(e,`utf16le`).toString(`base64`)],{stdio:[`ignore`,`pipe`,`ignore`],windowsHide:!0}).toString(`utf8`).trim();return t&&j.from(t,`base64`).toString(`utf8`).trim()||null}catch{return null}}async function Z(e){if(!e)return!1;try{return await u(e,o.F_OK),!0}catch{return!1}}async function Q(e,t,n){let r=n.withScope(`IDE`);switch(e){case`mp-weixin`:await W(t,r);break;default:r.info(`请手动打开开发者工具,导入 ${S(e)} 产物运行`);break}}const $=t({args:{mode:{type:`positional`,description:`运行模式`,required:!0},platform:{type:`string`,description:`通过参数显式指定平台`,required:!0}},async run({args:e,data:t}){let{config:n,logger:r}=t,a={...i.env,OIYO_UNI_CALLED:`1`},o=te([e.mode,`-p`,e.platform],{env:a});for await(let t of o)if(!t.startsWith(`请注意运行模式下`)&&!t.startsWith(`uni-app 有新版本发布`)){if(e.platform.startsWith(`mp`)&&n.ide?.open&&t.startsWith(`运行方式`)){await Q(e.platform,n,r);continue}i.stdout.write(`${t}\n`)}}});function te(e,t){let n=ne();return A(i.execPath,[n,...e],{stdout:[`pipe`],stderr:[`pipe`,`inherit`],reject:!1,env:t?.env})}function ne(){try{return L(`@dcloudio/vite-plugin-uni/bin/uni.js`)}catch(e){throw Error(`[oiyo] 未找到真实的 UNIAPP CLI,请移除 node_modules 重新安装依赖`,{cause:e})}}const re=t({meta:{name:`build`,description:`启动 Oiyo 构建流程`},plugins:[V],args:{target:{type:`positional`,description:`目标平台,如 h5、mp-weixin、app`,required:!1},platform:{type:`string`,description:`通过参数显式指定平台`,alias:[`p`]},...R},async run({args:e,data:t}){let{logger:r,config:a}=t,o=e.target??e.platform??e.p??await I();o||i.exit(0);let s=r.withScope(`CLI`);F.includes(o)||(s.error(`不支持的平台:${o}\n可选平台:${F.join(`, `)}`),i.exit(0)),await n(H,{rawArgs:e.logLevel?[`--logLevel`,e.logLevel]:[]}),await n($,{rawArgs:[`build`,`--platform`,o],data:{logger:r,config:a}})}});r(t({meta:{name:`oiyo`,version:`1.0.0`,description:`Oiyo CLI - 增强型工程框架`},subCommands:{prepare:H,dev:t({meta:{name:`dev`,description:`启动 Oiyo 开发流程`},plugins:[V],args:{target:{type:`positional`,description:`目标平台,如 h5、mp-weixin、app`,required:!1},platform:{type:`string`,description:`通过参数显式指定平台`,alias:[`p`]},...R},async run({args:e,data:t}){let{logger:r,config:a}=t,o=e.target??e.platform??e.p??await I();o||i.exit(0);let s=r.withScope(`CLI`);F.includes(o)||(s.error(`不支持的平台:${o}\n可选平台:${F.join(`, `)}`),i.exit(0)),await n(H,{rawArgs:e.logLevel?[`--logLevel`,e.logLevel]:[]}),await n($,{rawArgs:[`dev`,`--platform`,o],data:{logger:r,config:a}})}}),build:re}}));export{};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oiyo/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "skiyee",
|
|
7
7
|
"email": "319619193@qq.com",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"consola": "^3.4.2",
|
|
49
49
|
"execa": "^9.5.2",
|
|
50
50
|
"pathe": "^2.0.3",
|
|
51
|
-
"@oiyo/config": "0.
|
|
52
|
-
"@oiyo/core": "0.
|
|
51
|
+
"@oiyo/config": "0.2.0",
|
|
52
|
+
"@oiyo/core": "0.2.0"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"build": "tsdown",
|