diff --git a/Makefile b/Makefile index 881fcd4793..ad21dd0455 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ update-version-go: echo "package main\n\nconst esbuildVersion = \"$(ESBUILD_VERSION)\"" > cmd/esbuild/version.go platform-all: update-version-go test test-wasm - make -j5 platform-windows platform-darwin platform-linux platform-wasm platform-neutral + make -j6 platform-windows platform-darwin platform-linux platform-linux-arm64 platform-wasm platform-neutral platform-windows: cd npm/esbuild-windows-64 && npm version "$(ESBUILD_VERSION)" --allow-same-version @@ -39,6 +39,11 @@ platform-linux: cd npm/esbuild-linux-64 && npm version "$(ESBUILD_VERSION)" --allow-same-version GOOS=linux GOARCH=amd64 go build -o npm/esbuild-linux-64/bin/esbuild ./cmd/esbuild +platform-linux-arm64: + mkdir -p npm/esbuild-linux-arm64/bin + cd npm/esbuild-linux-arm64 && npm version "$(ESBUILD_VERSION)" --allow-same-version + GOOS=linux GOARCH=arm64 go build -o npm/esbuild-linux-arm64/bin/esbuild ./cmd/esbuild + platform-wasm: GOOS=js GOARCH=wasm go build -o npm/esbuild-wasm/esbuild.wasm ./cmd/esbuild cd npm/esbuild-wasm && npm version "$(ESBUILD_VERSION)" --allow-same-version @@ -50,7 +55,7 @@ platform-neutral: cd npm/esbuild && npm version "$(ESBUILD_VERSION)" --allow-same-version publish-all: update-version-go test test-wasm - make -j5 publish-windows publish-darwin publish-linux publish-wasm publish-neutral + make -j6 publish-windows publish-darwin publish-linux publish-linux-arm64 publish-wasm publish-neutral git commit -am "publish $(ESBUILD_VERSION) to npm" git tag "v$(ESBUILD_VERSION)" git push origin master "v$(ESBUILD_VERSION)" @@ -64,6 +69,9 @@ publish-darwin: platform-darwin publish-linux: platform-linux [ ! -z "$(OTP)" ] && cd npm/esbuild-linux-64 && npm publish --otp="$(OTP)" +publish-linux-arm64: platform-linux-arm64 + [ ! -z "$(OTP)" ] && cd npm/esbuild-linux-arm64 && npm publish --otp="$(OTP)" + publish-wasm: platform-wasm [ ! -z "$(OTP)" ] && cd npm/esbuild-wasm && npm publish --otp="$(OTP)" diff --git a/npm/esbuild-linux-arm64/README.md b/npm/esbuild-linux-arm64/README.md new file mode 100644 index 0000000000..0d52dd1fc0 --- /dev/null +++ b/npm/esbuild-linux-arm64/README.md @@ -0,0 +1,3 @@ +# esbuild + +This is the Linux ARM 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details. diff --git a/npm/esbuild-linux-arm64/package.json b/npm/esbuild-linux-arm64/package.json new file mode 100644 index 0000000000..80fba67c9f --- /dev/null +++ b/npm/esbuild-linux-arm64/package.json @@ -0,0 +1,16 @@ +{ + "name": "esbuild-linux-arm64", + "version": "0.3.5", + "description": "The Linux ARM 64-bit binary for esbuild, a JavaScript bundler.", + "repository": "https://github.com/evanw/esbuild", + "license": "MIT", + "os": [ + "linux" + ], + "cpu": [ + "arm64" + ], + "directories": { + "bin": "bin" + } +} \ No newline at end of file diff --git a/npm/esbuild/install.js b/npm/esbuild/install.js index f896d2d603..b02fbc416d 100644 --- a/npm/esbuild/install.js +++ b/npm/esbuild/install.js @@ -70,6 +70,8 @@ child_process.spawnSync(esbuild_exe, process.argv.slice(2), { stdio: 'inherit' } // Pick a package to install if (process.platform === 'linux' && os.arch() === 'x64') { installOnUnix('esbuild-linux-64'); +} else if (process.platform === 'linux' && os.arch() === 'arm64') { + installOnUnix('esbuild-linux-arm64'); } else if (process.platform === 'darwin' && os.arch() === 'x64') { installOnUnix('esbuild-darwin-64'); } else if (process.platform === 'win32' && os.arch() === 'x64') { diff --git a/npm/esbuild/lib/main.js b/npm/esbuild/lib/main.js index 3ae9e7d2be..7d8b68769d 100644 --- a/npm/esbuild/lib/main.js +++ b/npm/esbuild/lib/main.js @@ -15,6 +15,13 @@ function esbuildSpawn({ flags, stdio }) { }); } + if (process.platform === 'linux' && os.arch() === 'arm64') { + return child_process.spawn(path.join(__dirname, '..', 'bin', 'esbuild'), flags, { + cwd: process.cwd(), + stdio, + }); + } + if (process.platform === 'win32' && os.arch() === 'x64') { if (WASM) { return child_process.spawn('node', [path.join(__dirname, '..', 'bin', 'esbuild')].concat(flags), {