@@ -129,6 +129,7 @@ export async function assertCliPublishArtifacts(
129129 bin ?: unknown ;
130130 files ?: unknown ;
131131 exports ?: unknown ;
132+ publishConfig ?: unknown ;
132133 dependencies ?: unknown ;
133134 } ;
134135
@@ -138,14 +139,20 @@ export async function assertCliPublishArtifacts(
138139 if ( typeof pkg . version !== "string" || pkg . version . length === 0 ) {
139140 throw new Error ( `Missing CLI package version in ${ packageJsonPath } ` ) ;
140141 }
142+
143+ const publishBin = readPublishBin ( pkg ) ;
144+ const publishExports = readPublishExports ( pkg ) ;
145+
141146 if ( ! Array . isArray ( pkg . files ) || ! pkg . files . includes ( "dist" ) ) {
142147 throw new Error ( 'CLI package.json must publish only the "dist" files entry' ) ;
143148 }
144- if ( ! hasRecordValue ( pkg . bin , "coder-studio" , "./dist/bin.js" ) ) {
145- throw new Error ( 'CLI package.json bin must point "coder-studio" to "./dist/bin.js"' ) ;
149+ if ( ! hasRecordValue ( publishBin , "coder-studio" , "./dist/bin.js" ) ) {
150+ throw new Error ( 'CLI package.json publish bin must point "coder-studio" to "./dist/bin.js"' ) ;
146151 }
147- if ( ! hasNestedRecordValue ( pkg . exports , "." , "import" , "./dist/esm/index.mjs" ) ) {
148- throw new Error ( 'CLI package.json exports must point "." import to "./dist/esm/index.mjs"' ) ;
152+ if ( ! hasNestedRecordValue ( publishExports , "." , "import" , "./dist/esm/index.mjs" ) ) {
153+ throw new Error (
154+ 'CLI package.json publish exports must point "." import to "./dist/esm/index.mjs"'
155+ ) ;
149156 }
150157 assertPublishDependenciesResolvable ( pkg . dependencies , packageJsonPath ) ;
151158
@@ -168,6 +175,28 @@ export async function assertCliPublishArtifacts(
168175 return { name : pkg . name , version : pkg . version } ;
169176}
170177
178+ function readPublishBin ( pkg : { bin ?: unknown ; publishConfig ?: unknown } ) : unknown {
179+ if ( typeof pkg . publishConfig === "object" && pkg . publishConfig !== null ) {
180+ const publishBin = ( pkg . publishConfig as Record < string , unknown > ) . bin ;
181+ if ( publishBin !== undefined ) {
182+ return publishBin ;
183+ }
184+ }
185+
186+ return pkg . bin ;
187+ }
188+
189+ function readPublishExports ( pkg : { exports ?: unknown ; publishConfig ?: unknown } ) : unknown {
190+ if ( typeof pkg . publishConfig === "object" && pkg . publishConfig !== null ) {
191+ const publishExports = ( pkg . publishConfig as Record < string , unknown > ) . exports ;
192+ if ( publishExports !== undefined ) {
193+ return publishExports ;
194+ }
195+ }
196+
197+ return pkg . exports ;
198+ }
199+
171200export async function runPublishCli ( {
172201 cliDir = CLI_DIR ,
173202 exec = execCommand ,
0 commit comments