npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

migralite

v1.1.1

Published

Simple forward-only SQLite migration tool for Bun

Downloads

12

Readme

Migralite

Migralite is lightweight forward-only SQLite migration tool for Bun.

Key features:

  • Simple *.sql files as migration scripts
  • Forward-only ^1
  • Runs on Bun
  • CLI with sensible defaults, so there's no need to implement migration script
  • Migration generator
  • Version tracking — keeps track of applied migrations to prevent duplicate runs
  • Migrations are wrapped in transactions by default

Usage

Installation

Add CLI tool to the Bun based project:

bun add -d migralite

And then used via package.json scripts:

{
  "scripts": {
    "db:migrate": "migralite --database ./path/to/db.sqlite"
  }
}

The tool could be used with bunx without adding it to the project:

bunx migralite --help

Available commands

Help

--help or -h — shows help in the terminal.

Example:

bunx migralite --help

Version

--version or -v — shows current version of the CLI tool.

Example:

bunx migralite --version

Database path

--database or -d — path to the SQLite database file.

Example:

bunx migralite -d ./db/main.sqlite

Migrations path

--migrations or -m — path to the folder with SQL migration scripts, by default it's ./migrations folder in the root of the project.

Example:

bunx migralite -d ./db/main.sqlite -m ./db/migrations

Migration file generation

--generate or -g — migration file generation mode. It accepts short summary of what migration script is doing to generate migration name. The summary is added as a comment to the migration script.

Example:

bunx migralite -g "Create users table"

This will create a migration file in ./migrations folder called ./migrations/20240815123456__create-users-table.sql.

Only this filename format is accepted by the migration tool. Anything else will result in error and migrations won't run.

Use as a library

It's possible to use Migralite as a library:

import { Database } from "bun:sqlite";
import { applyMigrations } from "migralite";

const db = new Database(":memory:");

try {
    await applyMigrations(db, "./migrations");
} catch (err) {
    console.error(err);
}

Or connect to an existing DB file:

import { applyMigrations, connectToDatabase } from "migralite";

const db = connectToDatabase("./path/to/db");

try {
    await applyMigrations(db, "./migrations");
} catch (err) {
    console.error(err);
}

Development

To install dependencies:

bun install

To run:

bun run cli.ts

Contributions

Please raise an issue first and let's discuss. This project is pretty much done, but I am still open for some sensible contributions.

Attributions

Logo by https://www.behance.net/garnenka

License

Code is distributed under the MIT License.