@pubinfo/cli 0.6.4 → 0.6.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/.turbo/turbo-build.log +4 -4
- package/dist/cli.cjs +3 -3
- package/dist/cli.mjs +3 -3
- package/package.json +1 -1
- package/src/cli.ts +8 -4
- package/src/command/build.ts +7 -2
- package/src/command/dev.ts +7 -2
- package/src/utils/index.ts +14 -1
- package/src/utils/workspace.ts +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @pubinfo/cli@0.6.
|
|
2
|
+
> @pubinfo/cli@0.6.6 build /home/runner/work/pubinfo-max/pubinfo-max/packages/cli
|
|
3
3
|
> unbuild --minify
|
|
4
4
|
|
|
5
5
|
[info] Building cli
|
|
@@ -8,9 +8,9 @@ Generated an empty chunk: "cli".
|
|
|
8
8
|
Generated an empty chunk: "cli".
|
|
9
9
|
Generated an empty chunk: "cli".
|
|
10
10
|
[success] Build succeeded for cli
|
|
11
|
-
[log] dist/cli.cjs (total size: 5.
|
|
11
|
+
[log] dist/cli.cjs (total size: 5.74 kB, chunk size: 5.74 kB)
|
|
12
12
|
|
|
13
|
-
[log] dist/cli.mjs (total size: 4.
|
|
13
|
+
[log] dist/cli.mjs (total size: 4.66 kB, chunk size: 4.66 kB)
|
|
14
14
|
|
|
15
|
-
Σ Total dist size (byte size):
|
|
15
|
+
Σ Total dist size (byte size): 10.4 kB
|
|
16
16
|
[log]
|
package/dist/cli.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";const
|
|
3
|
-
`),{type:"select",options:
|
|
4
|
-
`),{type:"select",options:
|
|
2
|
+
"use strict";const r=require("node:process"),commander=require("commander"),i=require("consola"),execa=require("execa"),o=require("chalk"),node_path=require("node:path"),pkgTypes=require("pkg-types"),r$1=require("fast-glob"),node_fs=require("node:fs"),pathe=require("pathe"),mlly=require("mlly"),lodashEs=require("lodash-es"),n=require("cfonts");function _interopDefaultCompat(e){return e&&typeof e=="object"&&"default"in e?e.default:e}const r__default=_interopDefaultCompat(r),i__default=_interopDefaultCompat(i),o__default=_interopDefaultCompat(o),r__default$1=_interopDefaultCompat(r$1),n__default=_interopDefaultCompat(n);async function findWorkspaceDir(e=r__default.cwd(),l={}){const u=pathe.isAbsolute(e)?e:await mlly.resolvePath(e,l),a={startingFrom:u,...l};try{const p=await findNearestFile(".git/config",a);return pathe.resolve(p,"../..")}catch{}try{const p=await resolveLockfile(u,{...a});return pathe.dirname(p)}catch{}try{const p=await findFile(u,a);return pathe.dirname(p)}catch{}throw new Error(`Cannot detect workspace root from ${e}`)}const F=["yarn.lock","package-lock.json","pnpm-lock.yaml","npm-shrinkwrap.json","bun.lockb"];async function resolveLockfile(e=r__default.cwd(),l={}){const u={startingFrom:pathe.isAbsolute(e)?e:await mlly.resolvePath(e,l),...l};try{return await findNearestFile(F,u)}catch{}throw new Error(`No lockfile found from ${e}`)}function findNearestFile(e,l={}){return findFile(e,l)}const y$1={startingFrom:".",rootPattern:/^node_modules$/,reverse:!1,test:e=>{try{if(node_fs.statSync(e).isFile())return!0}catch{}}};async function findFile(e,l={}){const u=Array.isArray(e)?e:[e],a={...y$1,...l},p=pathe.resolve(a.startingFrom),b=p[0]==="/",k=p.split("/").filter(Boolean);b&&(k[0]=`/${k[0]}`);let v=k.findIndex(h=>h.match(a.rootPattern));if(v===-1&&(v=0),a.reverse)for(let h=v+1;h<=k.length;h++)for(const $ of u){const E=pathe.join(...k.slice(0,h),$);if(await a.test(E))return E}else for(let h=k.length;h>v;h--)for(const $ of u){const E=pathe.join(...k.slice(0,h),$);if(await a.test(E))return E}throw new Error(`Cannot find matching ${e} in ${a.startingFrom} or parent directories`)}async function s(){const e=r__default.cwd();return await findWorkspaceDir(e)}async function c(e){return await pkgTypes.readPackageJSON(e)}async function f(e){const l=[];for await(const u of e){const a=await c(u),p={name:node_path.basename(u),path:u,workspaceName:a.name,description:a.description};l.push(p)}return l}async function w(e){const l=await s(),u=await r__default$1.async("*",{cwd:`${l}/${e}`,onlyDirectories:!0,absolute:!0});return await f(u)}async function getAppsWorkspace(){return await w("apps")}async function getAllWorkspace(){const e=await s(),l=await r__default$1.async(["**/package.json"],{cwd:`${e}`,absolute:!0,ignore:["**/node_modules/**",`${e}/package.json`]}),u=new Map;for await(const a of l){const p=await c(a);u.set(p.name,p)}return u}function runScript(e,l){execa.execa("pnpm",["--filter",`${e}`,"run",`${l}`],{stdio:"inherit",preferLocal:!0})}function run(e,l=[]){execa.execa("vite",[`${e}`,...l],{stdio:"inherit",preferLocal:!0})}function normalizeWorkspace(e){return e.map(({name:l,workspaceName:u,description:a})=>({value:u,label:l,hint:a}))}async function isMonorepo(){return(await r__default$1.async("**/pnpm-workspace.yaml")).length>0}async function d$1(e=[]){if(!await isMonorepo()){run("build",e);return}const l=await getAppsWorkspace(),u=normalizeWorkspace(l);try{let a;u.length===1?a=u.map(b=>b.value):a=await g(u);const p=a.map(b=>`--filter=${b}`);await execa.execa("pnpm",["turbo","run","build",...p],{stdio:"inherit",preferLocal:!0})}catch(a){i__default.error(a.shortMessage)}}async function g(e){try{return await i__default.prompt(o__default.bold.green("\u{1F370} \u8BF7\u9009\u62E9\u8981\u6267\u884C\u6253\u5305\u547D\u4EE4\u7684\u7CFB\u7EDF\uFF08\u53EF\u591A\u9009\uFF09"),{type:"multiselect",required:!1,options:e})}catch{r__default.exit(0)}}function bootstrop(){t("PUBINFO")}function t(e){n__default.say(e,{font:"simple3d",align:"left",background:"transparent",letterSpacing:1,lineHeight:1,space:!0,maxLength:0,spaceless:!1,gradient:["blue","magenta"],independentGradient:!1,transitionGradient:!1,env:"node"})}async function d(e=[]){if(!await isMonorepo()){run("dev",e);return}const l=await getAppsWorkspace(),u=normalizeWorkspace(l);bootstrop();try{let a;if(u.length===1?a=u[0].value:a=await y(u),lodashEs.isSymbol(a))return;runScript(a,"dev")}catch(a){i.consola.log(a)}}async function y(e){try{return await i.consola.prompt(o__default.bold.green(`\u{1F370} \u9009\u62E9\u8981\u6267\u884C ${o__default.bold.yellow("dev")} \u547D\u4EE4\u7684\u4ED3\u5E93`),{type:"select",options:e})}catch{r__default.exit(0)}}async function m(){const e=await getAllWorkspace(),l=[...e.keys()],u=await i.consola.prompt(o__default.bold.green(`\u8BF7\u9009\u62E9\u8981\u6267\u884C\u6307\u4EE4\u7684\u4ED3\u5E93
|
|
3
|
+
`),{type:"select",options:l.map(b=>({label:`${o__default.bold.green("\u2192")} ${b}`,value:b}))});if(lodashEs.isSymbol(u))return;const a=Object.keys(e.get(u).scripts||{});if(!a.length){i.consola.info("\u5F53\u524D\u4ED3\u5E93\u6CA1\u6709\u53EF\u6267\u884C\u7684\u811A\u672C");return}const p=await i.consola.prompt(o__default.bold.green(`\u8BF7\u9009\u62E9\u8981\u6267\u884C\u7684\u6307\u4EE4
|
|
4
|
+
`),{type:"select",options:a});lodashEs.isSymbol(p)||runScript(u,p)}commander.program.command("dev").allowUnknownOption().action(()=>{const e=r__default.argv.slice(r__default.argv.indexOf("dev")+1);d(e)}),commander.program.command("build").action(()=>{const e=r__default.argv.slice(r__default.argv.indexOf("build")+1);d$1(e)}),commander.program.command("version").action(()=>{bootstrop()}),commander.program.command("pub").action(()=>{m()}),commander.program.parse();
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
`),{type:"select",options:
|
|
4
|
-
`),{type:"select",options:
|
|
2
|
+
import i from"node:process";import{program as p}from"commander";import h,{consola as m}from"consola";import{execa as w}from"execa";import u from"chalk";import{basename as P}from"node:path";import{readPackageJSON as S}from"pkg-types";import y from"fast-glob";import{statSync as W}from"node:fs";import{isAbsolute as b,resolve as E,dirname as F,join as k}from"pathe";import{resolvePath as v}from"mlly";import{isSymbol as g}from"lodash-es";import M from"cfonts";async function G(t=i.cwd(),e={}){const r=b(t)?t:await v(t,e),n={startingFrom:r,...e};try{const o=await $(".git/config",n);return E(o,"../..")}catch{}try{const o=await U(r,{...n});return F(o)}catch{}try{const o=await C(r,n);return F(o)}catch{}throw new Error(`Cannot detect workspace root from ${t}`)}const I=["yarn.lock","package-lock.json","pnpm-lock.yaml","npm-shrinkwrap.json","bun.lockb"];async function U(t=i.cwd(),e={}){const r={startingFrom:b(t)?t:await v(t,e),...e};try{return await $(I,r)}catch{}throw new Error(`No lockfile found from ${t}`)}function $(t,e={}){return C(t,e)}const _={startingFrom:".",rootPattern:/^node_modules$/,reverse:!1,test:t=>{try{if(W(t).isFile())return!0}catch{}}};async function C(t,e={}){const r=Array.isArray(t)?t:[t],n={..._,...e},o=E(n.startingFrom),c=o[0]==="/",s=o.split("/").filter(Boolean);c&&(s[0]=`/${s[0]}`);let f=s.findIndex(a=>a.match(n.rootPattern));if(f===-1&&(f=0),n.reverse)for(let a=f+1;a<=s.length;a++)for(const d of r){const l=k(...s.slice(0,a),d);if(await n.test(l))return l}else for(let a=s.length;a>f;a--)for(const d of r){const l=k(...s.slice(0,a),d);if(await n.test(l))return l}throw new Error(`Cannot find matching ${t} in ${n.startingFrom} or parent directories`)}async function D(){const t=i.cwd();return await G(t)}async function A(t){return await S(t)}async function q(t){const e=[];for await(const r of t){const n=await A(r),o={name:P(r),path:r,workspaceName:n.name,description:n.description};e.push(o)}return e}async function z(t){const e=await D(),r=await y.async("*",{cwd:`${e}/${t}`,onlyDirectories:!0,absolute:!0});return await q(r)}async function x(){return await z("apps")}async function H(){const t=await D(),e=await y.async(["**/package.json"],{cwd:`${t}`,absolute:!0,ignore:["**/node_modules/**",`${t}/package.json`]}),r=new Map;for await(const n of e){const o=await A(n);r.set(o.name,o)}return r}function j(t,e){w("pnpm",["--filter",`${t}`,"run",`${e}`],{stdio:"inherit",preferLocal:!0})}function B(t,e=[]){w("vite",[`${t}`,...e],{stdio:"inherit",preferLocal:!0})}function N(t){return t.map(({name:e,workspaceName:r,description:n})=>({value:r,label:e,hint:n}))}async function O(){return(await y.async("**/pnpm-workspace.yaml")).length>0}async function J(t=[]){if(!await O()){B("build",t);return}const e=await x(),r=N(e);try{let n;r.length===1?n=r.map(c=>c.value):n=await K(r);const o=n.map(c=>`--filter=${c}`);await w("pnpm",["turbo","run","build",...o],{stdio:"inherit",preferLocal:!0})}catch(n){h.error(n.shortMessage)}}async function K(t){try{return await h.prompt(u.bold.green("\u{1F370} \u8BF7\u9009\u62E9\u8981\u6267\u884C\u6253\u5305\u547D\u4EE4\u7684\u7CFB\u7EDF\uFF08\u53EF\u591A\u9009\uFF09"),{type:"multiselect",required:!1,options:t})}catch{i.exit(0)}}function L(){Q("PUBINFO")}function Q(t){M.say(t,{font:"simple3d",align:"left",background:"transparent",letterSpacing:1,lineHeight:1,space:!0,maxLength:0,spaceless:!1,gradient:["blue","magenta"],independentGradient:!1,transitionGradient:!1,env:"node"})}async function R(t=[]){if(!await O()){B("dev",t);return}const e=await x(),r=N(e);L();try{let n;if(r.length===1?n=r[0].value:n=await T(r),g(n))return;j(n,"dev")}catch(n){m.log(n)}}async function T(t){try{return await m.prompt(u.bold.green(`\u{1F370} \u9009\u62E9\u8981\u6267\u884C ${u.bold.yellow("dev")} \u547D\u4EE4\u7684\u4ED3\u5E93`),{type:"select",options:t})}catch{i.exit(0)}}async function V(){const t=await H(),e=[...t.keys()],r=await m.prompt(u.bold.green(`\u8BF7\u9009\u62E9\u8981\u6267\u884C\u6307\u4EE4\u7684\u4ED3\u5E93
|
|
3
|
+
`),{type:"select",options:e.map(c=>({label:`${u.bold.green("\u2192")} ${c}`,value:c}))});if(g(r))return;const n=Object.keys(t.get(r).scripts||{});if(!n.length){m.info("\u5F53\u524D\u4ED3\u5E93\u6CA1\u6709\u53EF\u6267\u884C\u7684\u811A\u672C");return}const o=await m.prompt(u.bold.green(`\u8BF7\u9009\u62E9\u8981\u6267\u884C\u7684\u6307\u4EE4
|
|
4
|
+
`),{type:"select",options:n});g(o)||j(r,o)}p.command("dev").allowUnknownOption().action(()=>{const t=i.argv.slice(i.argv.indexOf("dev")+1);R(t)}),p.command("build").action(()=>{const t=i.argv.slice(i.argv.indexOf("build")+1);J(t)}),p.command("version").action(()=>{L()}),p.command("pub").action(()=>{V()}),p.parse();
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import process from 'node:process';
|
|
2
3
|
import { program } from 'commander';
|
|
3
4
|
import build from './command/build';
|
|
4
5
|
import dev from './command/dev';
|
|
@@ -6,15 +7,18 @@ import version from './command/version';
|
|
|
6
7
|
import pub from './command/pub';
|
|
7
8
|
|
|
8
9
|
program
|
|
9
|
-
.command('
|
|
10
|
+
.command('dev')
|
|
11
|
+
.allowUnknownOption()
|
|
10
12
|
.action(() => {
|
|
11
|
-
|
|
13
|
+
const args = process.argv.slice(process.argv.indexOf('dev') + 1);
|
|
14
|
+
dev(args);
|
|
12
15
|
});
|
|
13
16
|
|
|
14
17
|
program
|
|
15
|
-
.command('
|
|
18
|
+
.command('build')
|
|
16
19
|
.action(() => {
|
|
17
|
-
|
|
20
|
+
const args = process.argv.slice(process.argv.indexOf('build') + 1);
|
|
21
|
+
build(args);
|
|
18
22
|
});
|
|
19
23
|
|
|
20
24
|
program
|
package/src/command/build.ts
CHANGED
|
@@ -3,9 +3,14 @@ import consola from 'consola';
|
|
|
3
3
|
import { execa } from 'execa';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import { getAppsWorkspace } from '../utils/workspace';
|
|
6
|
-
import { normalizeWorkspace } from '../utils';
|
|
6
|
+
import { isMonorepo, normalizeWorkspace, run } from '../utils';
|
|
7
|
+
|
|
8
|
+
export default async function main(args: string[] = []) {
|
|
9
|
+
if (!await isMonorepo()) {
|
|
10
|
+
run('build', args);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
7
13
|
|
|
8
|
-
export default async function main() {
|
|
9
14
|
const workspace = await getAppsWorkspace();
|
|
10
15
|
const options = normalizeWorkspace(workspace);
|
|
11
16
|
|
package/src/command/dev.ts
CHANGED
|
@@ -3,10 +3,15 @@ import { consola } from 'consola';
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { isSymbol } from 'lodash-es';
|
|
5
5
|
import { getAppsWorkspace } from '../utils/workspace';
|
|
6
|
-
import { normalizeWorkspace, runScript } from '../utils/index';
|
|
6
|
+
import { isMonorepo, normalizeWorkspace, run, runScript } from '../utils/index';
|
|
7
7
|
import { bootstrop } from '../log';
|
|
8
8
|
|
|
9
|
-
export default async function main() {
|
|
9
|
+
export default async function main(args: string[] = []) {
|
|
10
|
+
if (!await isMonorepo()) {
|
|
11
|
+
run('dev', args);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
10
15
|
const workspace = await getAppsWorkspace();
|
|
11
16
|
const options = normalizeWorkspace(workspace);
|
|
12
17
|
bootstrop();
|
package/src/utils/index.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
|
+
import fg from 'fast-glob';
|
|
2
3
|
import type { PackagesWorkspaceInfo } from './workspace';
|
|
3
4
|
|
|
4
|
-
export
|
|
5
|
+
export function runScript(workspace: string, command: string) {
|
|
5
6
|
execa('pnpm', ['--filter', `${workspace}`, 'run', `${command}`], {
|
|
6
7
|
stdio: 'inherit',
|
|
7
8
|
preferLocal: true,
|
|
8
9
|
});
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
export function run(command: string, args: string[] = []) {
|
|
13
|
+
execa('vite', [`${command}`, ...args], {
|
|
14
|
+
stdio: 'inherit',
|
|
15
|
+
preferLocal: true,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
11
19
|
export function normalizeWorkspace(workspace: PackagesWorkspaceInfo[]) {
|
|
12
20
|
return workspace.map(({ name, workspaceName, description }) => {
|
|
13
21
|
return {
|
|
@@ -17,3 +25,8 @@ export function normalizeWorkspace(workspace: PackagesWorkspaceInfo[]) {
|
|
|
17
25
|
};
|
|
18
26
|
});
|
|
19
27
|
}
|
|
28
|
+
|
|
29
|
+
export async function isMonorepo() {
|
|
30
|
+
const files = await fg.async('**/pnpm-workspace.yaml');
|
|
31
|
+
return files.length > 0;
|
|
32
|
+
}
|
package/src/utils/workspace.ts
CHANGED
|
@@ -63,7 +63,7 @@ async function getPackages(workspace: string) {
|
|
|
63
63
|
absolute: true,
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
return await normalizeWorkspaceInfo(subWorkspace
|
|
66
|
+
return await normalizeWorkspaceInfo(subWorkspace);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
export async function getAppsWorkspace() {
|