mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
90 lines
2.2 KiB
Bash
90 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
dir=$(mktemp -d)
|
|
|
|
cd $dir
|
|
${NPM_CLIENT:-$(which bun)} add react react-dom @types/react @babel/parser esbuild vite@3.0.0
|
|
|
|
echo "console.log(typeof require(\"react\").createElement);" >index.js
|
|
chmod +x index.js
|
|
|
|
JS_RUNTIME=${JS_RUNTIME:-"$(which bun)"}
|
|
|
|
if [ "$JS_RUNTIME" == "node" ]; then
|
|
result="$(node ./index.js)"
|
|
fi
|
|
|
|
if [ "$JS_RUNTIME" != "node" ]; then
|
|
result="$($JS_RUNTIME run ./index.js)"
|
|
fi
|
|
|
|
echo "console.log(typeof require(\"react-dom\").render);" >index.js
|
|
chmod +x index.js
|
|
|
|
JS_RUNTIME=${JS_RUNTIME:-"$(which bun)"}
|
|
|
|
# If this fails to run, it means we didn't link @babel/parser correctly
|
|
$(which grealpath || which realpath) -e ./node_modules/.bin/parser >/dev/null
|
|
|
|
# If this fails to run, it means we didn't link esbuild correctly or esbuild's install script broke
|
|
# - https://github.com/evanw/esbuild/issues/2558
|
|
./node_modules/.bin/esbuild --version >/dev/null
|
|
|
|
VITE_ESBUILD="$(echo node_modules/vite/node_modules/esbuild-*)"
|
|
$VITE_ESBUILD/bin/esbuild --version >/dev/null
|
|
|
|
if [ "$JS_RUNTIME" == "node" ]; then
|
|
result="$(node ./index.js)"
|
|
fi
|
|
|
|
if [ "$JS_RUNTIME" != "node" ]; then
|
|
result="$($JS_RUNTIME run ./index.js)"
|
|
fi
|
|
|
|
if [ "$result" != "function" ]; then
|
|
echo "ERR: Expected 'function', got '$result'"
|
|
exit 1
|
|
fi
|
|
|
|
${NPM_CLIENT:-$(which bun)} remove react-dom
|
|
|
|
if [ -d "node_modules/react-dom" ]; then
|
|
echo "ERR: react-dom module still exists in $dir"
|
|
exit 1
|
|
fi
|
|
|
|
yarn_dot_lock=$(${NPM_CLIENT:-$(which bun)} bun.lockb)
|
|
|
|
if echo "$yarn_dot_lock" | grep -q "react-dom"; then
|
|
echo "ERR: react-dom module still exists in lockfile"
|
|
exit 1
|
|
fi
|
|
|
|
${NPM_CLIENT:-$(which bun)} remove @types/react
|
|
|
|
yarn_dot_lock=$(${NPM_CLIENT:-$(which bun)} bun.lockb)
|
|
|
|
if echo "$yarn_dot_lock" | grep -q "@types/react"; then
|
|
echo "ERR: @types/react module still exists in lockfile"
|
|
exit 1
|
|
fi
|
|
|
|
if echo "$yarn_dot_lock" | grep -q "@types/react"; then
|
|
echo "ERR: @types/react module still exists in $dir"
|
|
exit 1
|
|
fi
|
|
|
|
${NPM_CLIENT:-$(which bun)} remove react
|
|
|
|
if [ -d "node_modules/react" ]; then
|
|
echo "ERR: react module still exists in $dir"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -d "bun.lockb" ]; then
|
|
echo "ERR: empty bun.lockb should be deleted"
|
|
exit 1
|
|
fi
|