diff --git a/src/utils/rollup-plugins/patch-binary.ts b/src/utils/rollup-plugins/patch-binary.ts index fd3ea50..132d2b8 100644 --- a/src/utils/rollup-plugins/patch-binary.ts +++ b/src/utils/rollup-plugins/patch-binary.ts @@ -20,7 +20,7 @@ export const patchBinary = ( } const entryFileNames = outputOptions.entryFileNames as (chunk: RenderedChunk) => string; - const outputPath = `./${path.join(outputOptions.dir!, entryFileNames(chunk))}`; + const outputPath = `./${path.posix.join(outputOptions.dir!, entryFileNames(chunk))}`; if (executablePaths.includes(outputPath)) { const transformed = new MagicString(code); @@ -44,7 +44,7 @@ export const patchBinary = ( const outputChunk = chunk as OutputChunk; if (outputChunk.isEntry && outputChunk.facadeModuleId) { - const outputPath = path.join(outputOptions.dir!, entryFileNames(outputChunk)); + const outputPath = `./${path.posix.join(outputOptions.dir!, entryFileNames(outputChunk))}`; await fs.promises.chmod(outputPath, 0o755); } }); diff --git a/tests/specs/builds/bin.ts b/tests/specs/builds/bin.ts index 43a65b0..5a35b86 100644 --- a/tests/specs/builds/bin.ts +++ b/tests/specs/builds/bin.ts @@ -19,17 +19,18 @@ export default testSuite(({ describe }, nodePath: string) => { expect(pkgrollProcess.exitCode).toBe(0); expect(pkgrollProcess.stderr).toBe(''); - if (process.platform !== 'win32') { - await test('is executable', async () => { - const content = await fixture.readFile('dist/index.mjs', 'utf8'); - expect(content).toMatch('#!/usr/bin/env node'); + await test('is executable', async () => { + const content = await fixture.readFile('dist/index.mjs', 'utf8'); + expect(content).toMatch('#!/usr/bin/env node'); + // File modes don't exist on Windows + if (process.platform !== 'win32') { const stats = await fs.stat(`${fixture.path}/dist/index.mjs`); const unixFilePermissions = `0${(stats.mode & 0o777).toString(8)}`; // eslint-disable-line no-bitwise expect(unixFilePermissions).toBe('0755'); - }); - } + } + }); }); test('supports object', async ({ onTestFinish }) => {