Skip to content

Commit 7fcb940

Browse files
author
chengyu.chengyulia
committed
fix: npmClient for publish
1 parent 01ec7be commit 7fcb940

2 files changed

Lines changed: 25 additions & 14 deletions

File tree

src/built-in-plugins/command-publish/plugin/run-publish.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,21 @@ export const publish = async (options: PublishOption) => {
9797
};
9898

9999
async function authPublish(packageNames: string[]) {
100-
let name: string;
101-
try {
102-
const nameRet = execSync('tnpm whoami');
103-
name = nameRet.toString().trim();
104-
} catch (error) {
105-
logFatal(error);
106-
}
100+
const getUserName = (npmClient = 'npm') => {
101+
let name: string;
102+
try {
103+
const nameRet = execSync(`${npmClient} whoami`);
104+
name = nameRet.toString().trim();
105+
} catch (error) {
106+
logFatal(error);
107+
}
108+
return name;
109+
};
110+
107111
const failedPkgSet = new Set<string>();
108-
const checkOwner = (uName: string, pName: string) =>
112+
const checkOwner = (uName: string, pName: string, npmClient?: string) =>
109113
new Promise((res, rej) => {
110-
isOwner(uName, pName)
114+
isOwner(uName, pName, npmClient)
111115
.then(v => {
112116
if (!v) {
113117
failedPkgSet.add(pName);
@@ -116,7 +120,14 @@ async function authPublish(packageNames: string[]) {
116120
})
117121
.catch(e => rej(e));
118122
});
119-
const pkgsP = packageNames.map(p => checkOwner(name, p));
123+
124+
const pkgsP = packageNames.map(p => {
125+
const packageConfig =
126+
p === pri.projectPackageJson.name
127+
? pri.projectConfig
128+
: pri.packages.find(eachPackage => eachPackage.packageJson.name === p)?.config;
129+
return checkOwner(getUserName(packageConfig?.npmClient), p, packageConfig?.npmClient);
130+
});
120131
await Promise.all(pkgsP);
121132
if (failedPkgSet.size > 0) {
122133
logFatal(`Permission error: need ownership to publish these packages. \n ${Array.from(failedPkgSet).join('\n')}`);

src/utils/npm.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,24 @@ export async function isExist(packageName: string) {
1616
}
1717
}
1818

19-
export async function getOwners(packageName: string) {
19+
export async function getOwners(packageName: string, npmClient?: string) {
2020
let ownerStr = '';
2121

2222
try {
23-
ownerStr = await exec(`${globalState.sourceConfig.npmClient} owner ls ${packageName}`);
23+
ownerStr = await exec(`${npmClient || globalState.sourceConfig.npmClient} owner ls ${packageName}`);
2424
} catch (error) {
2525
ownerStr = '';
2626
}
2727
return ownerStr.split('\n').filter(owner => owner !== '');
2828
}
2929

30-
export async function isOwner(userName: string, packageName: string) {
30+
export async function isOwner(userName: string, packageName: string, npmClient?: string) {
3131
const npmIsExist = await isExist(packageName);
3232
if (!npmIsExist) {
3333
return true;
3434
}
3535

36-
const npmOwners = await getOwners(packageName);
36+
const npmOwners = await getOwners(packageName, npmClient);
3737
if (
3838
!npmOwners.some(eachOwner => {
3939
return eachOwner.indexOf(userName) > -1;

0 commit comments

Comments
 (0)