presea
v0.0.10
Published
An unbuild preset for bundling Node single executable applications
Downloads
361
Readme
presea
An unbuild preset for bundling Node single executable applications.
From Node.js 20, it supports Single Executable Applications experimentally. This package integrates the binary bundle steps with unbuild following Single executable applications | Node.js v20.0.0 Document.
Installation
npm i -D presea
Usage
You should provide field bin
in your package.json
like the following config.
{
"bin": {
"hello": "./dist/hello.mjs"
}
}
Import presea preset in your build.config.ts
.
// build.config.ts
import { defineBuildConfig } from 'unbuild';
import { Sea } from 'presea/unbuild';
export default defineBuildConfig({
preset: Sea(),
// Your config...
});
Then, just run unbuild
and the bundled single executable application is in your output directory.
$ npx unbuild
$ ./dist/hello world
Hello, world!
Programmatic Usage
import { bundle } from 'presea'
await bundle('path/to/package')
GitHub Actions
Here is an example GitHub Actions config to bundle single executable applications.
You should replace <bin>
to your own binary name which is the same as your package.json
or your build config.
name: Release
on:
push:
tags:
- 'v*'
jobs:
bundle:
name: Bundle on ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: linux
os: ubuntu-latest
binary: ./dist/<bin>
- target: windows
os: windows-latest
binary: .\dist\<bin>.exe
steps:
- uses: actions/checkout@v3
- name: Setup pnpm
uses: pnpm/[email protected]
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: pnpm
- name: Install
run: pnpm install
- name: Build
run: pnpm build # now binary is located at matrix.binary
# Upload to release and so on...
Development
- Clone this repository
- Use
pnpm
as the package manager (npm i -g pnpm
) - Install dependencies using
pnpm install
- Build the module using
pnpm build
or stub the module usingpnpm dev
- Test the bundle using
cd example && pnpm i && pnpm build
License
MIT License © 2023 XLor