Skip to content

thejasonxie/bun-pkg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bun-pkg

npm version npm GitHub license

A monorepo manager for the bun workspaces.

This is an attempt to replicate pnpm's recursive command in bun workspaces. If there are any issues with the package, feel free to open an issue or fork & pull request. Or just modify the bun-pkg.ts file in the scripts folder within your own project to your liking.

Usage

bun pkg --help
bun pkg -a build # build all packages using bun build
bun pkg -a run build # run build script in all packages
bun pkg package-a build # build package-a using bun build
bun pkg package-a run build # run build script in package-a
bun pkg -n package-a init # init package-a using bun init
bun pkg -n package-a create vite # create vite app in package-a

# create a new package with a custom package.json using bun-pkg.json,
# see configuration section:
bun pkg -n package-a init --use-config

Installation

Using the CLI

bunx bun-pkg
echo {} > bun-pkg.json # See configuration section below for more details

Manually

Run the following command to download the script:

mkdir -p "scripts"
curl "https://raw.githubusercontent.com/thejasonxie/bun-pkg/main/scripts/bun-pkg.ts" > "scripts/bun-pkg.ts"

Add the following to your package.json's scripts:

 "scripts": {
   "pkg": "bun scripts/bun-pkg.ts"
  }

Then if you want to set the package.json of new packages, create a bun-pkg.json and add a template package.json to it. See configuration section below.

echo {} > bun-pkg.json # See configuration section below for more details

Configuration

In root of the monorepo, create a bun-pkg.json file to configure the package.json of a new package when --use-config flag is used. bun-pkg.json basically mirror the package.json you want to be created for new packages. ${PACKAGE} will be replaced with the package name.

Any 'scripts', 'dependencies', 'devDependencies', 'peerDependencies' lines will be appended to the new package.json.

{
  "name": "@organization/${PACKAGE}",
  "version": "0.0.1",
  "private": false,
  "publishConfig": {
    "@organization:registry": "https://npm.pkg.github.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/organization/${PACKAGE}"
  }
}

Releases

No releases published

Packages

No packages published