Never Print Magazines

    node-liquibase
    TypeScript icon, indicating that this package has built-in type declarations

    4.1.1 • Public • Published

    Website Website Twitter Follow npm npm GitHub repo size

    Use Node.js and databases? Want to do smart architecture decisions? Do not invent wheel, use Liquibase. Liquibase is an open-source database-independent library for tracking, managing and applying database schema changes.

    Installation

    There is an easy way to integrate Liquibase power to Node.js application. All you need is npm package.

    $ npm install --save liquibase

    Usage

    Liquibase support rich pool of commands to keep your database up-to-date, like update, rollback, diff check out full list here: https://docs.liquibase.com/commands/home.html.

    CLI

    You can use this NPM package as a CLI tool under the namespace node-liquibase if you wish.

    Example

    Bundled Liquibase Executable
    node-liquibase
    --changeLogFile="/examples/change-log-examples/postgreSQL/changelog.xml"
    --url="jdbc:postgresql://localhost:5432/postgres"
    --username="yourusername"
    --password="yoursecurepassword"
    --classpath="/Users/taylor/Dev/Liquibase/hackathons/node-liquibase/drivers/postgresql-42.2.8.jar"
    status
    Alternative Liquibase Executable
    node-liquibase /Users/taylor/Dev/Liquibase/hackathons/node-liquibase/bin/liquibase/liquibase
     --changeLogFile="/examples/change-log-examples/postgreSQL/changelog.xml"
     --url="jdbc:postgresql://localhost:5432/postgres"
     --username="yourusername"
     --password="yoursecurepassword"
     --classpath="/Users/taylor/Dev/Liquibase/hackathons/node-liquibase/drivers/postgresql-42.2.8.jar"
     status

    In Your Project Files

    TypeScript

    import { LiquibaseConfig, Liquibase, POSTGRESQL_DEFAULT_CONFIG } from 'node-liquibase'
    
    const myConfig: LiquibaseConfig = {
    	...POSTGRESQL_DEFAULT_CONFIG,
    	url: 'jdbc:postgresql://localhost:5432/node_liquibase_testing',
    	username: 'yourusername',
    	password: 'yoursecurepassword',
    }
    const instance = new Liquibase(myConfig);
    
    async function doEet() {
    	await instance.status();
    	// await instance.update();
    	// await instance.dropAll();
    }
    
    doEet();

    JavaScript

    From the index.js file adjust "<>" fields accordingly:

    const fromLibrary = require('node-liquibase/cjs/index');
    const POSTGRESQL_DEFAULT_CONFIG = require('node-liquibase/cjs/constants/defaults/postgresql-default.config').POSTGRESQL_DEFAULT_CONFIG;
    
    const myConfig = {
    	changeLogFile: POSTGRESQL_DEFAULT_CONFIG.changeLogFile,
    	classpath: POSTGRESQL_DEFAULT_CONFIG.classpath,
    	url: 'jdbc:postgresql://localhost:5432/node_liquibase_testing',
    	username: 'yourusername',
    	password: 'yoursecurepassword',
    }
    
    const instance = new fromLibrary.Liquibase(myConfig);
    
    doEet();
    
    
    async function doEet() {
    	await instance.status();
    	// await instance.update();
    	// await instance.dropAll();
    }

    Want to help?

    This project needs some work on the infrastructure and build tooling side. For now the workflow to test an 'end user ready' version of the project, you'll first need to build/compile the code, and then you can run it using the Node CLI's REPL node path/to/something.js.

    There is an issue in path resolution within THIS application code in addition to the complexities in Liquibase Core. Until this is resolved the resolved path for the Liquibase executable will differ between compiled and source code. This will affect your experience if you try to transpile the code on the fly using ts-node. I have not resolved the issue yet.

    Build

    To build all of the things:

    yarn build

    Tests

    Run tests with:

    yarn test

    Env Vars

    To substitute your own user/pass for a given environment, make a copy of .env.example in root directory as .env and update accordingly.

    Install

    npm i node-liquibase

    DownloadsWeekly Downloads

    420

    Version

    4.1.1

    License

    MIT

    Unpacked Size

    20.7 MB

    Total Files

    97

    Last publish

    Collaborators

    • tabuckner