@@ -97,17 +97,21 @@ export const publish = async (options: PublishOption) => {
9797} ;
9898
9999async 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' ) } ` ) ;
0 commit comments