oven-sh / bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
https://bun.sh
Other
74.4k stars 2.78k forks source link

Strange behaviour with prepublishOnly script runned by bun publish on windows #15388

Open kravetsone opened 21 hours ago

kravetsone commented 21 hours ago

What version of Bun is running?

1.1.36+ededc168c

What platform is your computer?

Microsoft Windows NT 10.0.26100.0 x64

What steps can reproduce the bug?

Repository - monorepo with two packages

I run bun publish in the redis package folder but it exited with code 1 but when i run this prepublishOnly script all works fine

PS Z:\PROJECTS\GRAMIO\storages\packages\redis> bun publish
bun publish v1.1.36 (ededc168)
$ bunx tsc && bun test && bun ./scripts/release-jsr.ts && bunx pkgroll
Version 5.7.2
tsc: The TypeScript Compiler - Version 5.7.2                                                                            
                                                                                                                     TS 
COMMON COMMANDS

  tsc
  Compiles the current project (tsconfig.json in the working directory.)

  tsc app.ts util.ts
  Ignoring tsconfig.json, compiles the specified files with default compiler options.

  tsc -b
  Build a composite project in the working directory.

  tsc --init
  Creates a tsconfig.json with the recommended settings in the working directory.

  tsc -p ./path/to/tsconfig.json
  Compiles the TypeScript project located at the specified path.

  tsc --help --all
  An expanded version of this information, showing all possible compiler options

  tsc --noEmit
  tsc --target esnext
  Compiles the current project, with additional settings.

COMMAND LINE FLAGS

     --help, -h  Print this message.

    --watch, -w  Watch input files.

          --all  Show all compiler options.

  --version, -v  Print the compiler's version.

         --init  Initializes a TypeScript project and creates a tsconfig.json file.

  --project, -p  Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.

   --showConfig  Print the final configuration instead of building.

    --build, -b  Build one or more projects and their dependencies, if out of date

COMMON COMPILER OPTIONS

               --pretty  Enable color and formatting in TypeScript's output to make compiler errors easier to read.
                  type:  boolean
               default:  true

      --declaration, -d  Generate .d.ts files from TypeScript and JavaScript files in your project.
                  type:  boolean
               default:  `false`, unless `composite` is set

       --declarationMap  Create sourcemaps for d.ts files.
                  type:  boolean
               default:  false

  --emitDeclarationOnly  Only output d.ts files and not JavaScript files.
                  type:  boolean
               default:  false

            --sourceMap  Create source map files for emitted JavaScript files.
                  type:  boolean
               default:  false

               --noEmit  Disable emitting files from a compilation.
                  type:  boolean
               default:  false

           --target, -t  Set the JavaScript language version for emitted JavaScript and include compatible library declarations.
                one of:  es5, es6/es2015, es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, es2024, esnext
               default:  es5

           --module, -m  Specify what module code is generated.
                one of:  none, commonjs, amd, umd, system, es6/es2015, es2020, es2022, esnext, node16, nodenext, preserve
               default:  undefined

                  --lib  Specify a set of bundled library declaration files that describe the target runtime environment.
           one or more:  es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, es2024, esnext, dom, dom.iterable, dom.asynciterable, webwor                         ker, webworker.importscripts, webworker.iterable, webworker.asynciterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.i                         terable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.arraybuf                         fer, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable                         /esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es201                         9.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es202                         0.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es20                         22.string, es2022.regexp, es2023.array, es2023.collection, es2023.intl, es2024.arraybuffer, es2024.collection, es2024.object/esnext.object, es202                         4.promise/esnext.promise, es2024.regexp/esnext.regexp, es2024.sharedmemory, es2024.string/esnext.string, esnext.array, esnext.collection, esnext.                         intl, esnext.disposable, esnext.decorators, esnext.iterator, decorators, decorators.legacy
               default:  undefined

              --allowJs  Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files.
                  type:  boolean
               default:  false

              --checkJs  Enable error reporting in type-checked JavaScript files.
                  type:  boolean
               default:  false

                  --jsx  Specify what JSX code is generated.
                one of:  preserve, react, react-native, react-jsx, react-jsxdev
               default:  undefined

              --outFile  Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output.

               --outDir  Specify an output folder for all emitted files.

       --removeComments  Disable emitting comments.
                  type:  boolean
               default:  false

               --strict  Enable all strict type-checking options.
                  type:  boolean
               default:  false

                --types  Specify type package names to be included without being referenced in a source file.

      --esModuleInterop  Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility.   
                  type:  boolean
               default:  false

You can learn about all of the compiler options at https://aka.ms/tsc

error: script "prepublishOnly" exited with code 1
PS Z:\PROJECTS\GRAMIO\storages\packages\redis> bun prepublishOnly
$ bunx tsc && bun test && bun ./scripts/release-jsr.ts && bunx pkgroll
bun test v1.1.36 (ededc168)

tests\index.test.ts:
✓ redisStorage > should set and get a value [15.00ms]
✓ redisStorage > should return undefined for a non-existent key
✓ redisStorage > should check if a key exists
✓ redisStorage > should return false when deleting a non-existent key
✓ redisStorage > should set and get a complex object
✓ redisStorage > should respect the TTL option [1110.00ms]
✓ redisStorage > should use keyPrefix correctly

 9 pass
 0 fail
 13 expect() calls
Ran 9 tests across 1 files. [1280.00ms]
Prepared to release on JSR!

What is the expected behavior?

No response

What do you see instead?

No response

Additional information

As a workaraound u can rename prepublishOnly to something else until it will be fixed and run it manually

RiskyMH commented 10 hours ago

The issue seems to be because bun publish runs it with context of root directory (of monorepo), this causes tsc to give help menu as no config.

C:\bun-repos\15388\packages\redis>bun publish
bun publish v1.1.36 (ededc168)
$ bun --print process.argv
[ "C:\\Users\\Risky\\.bun\\bin\\bun.exe", "C:\\bun-repos\\15388\\[eval]" ]

packed 0.86KB package.json
packed 1.1KB LICENSE
packed 0.66KB README.md
// ... other things

C:\bun-repos\15388\packages\redis>bun run prepublishOnly
$ bun --print process.argv
[ "C:\\Users\\Risky\\.bun\\bin\\bun.exe", "C:\\bun-repos\\15388\\packages\\redis\\[eval]" ]

And this does seem to be windows only.