Giter Club home page Giter Club logo

atomiq-cli's Introduction

Atomiq CLI

Node.js microservice development tailored for Docker environments.

Features

  • Generate app, API, and library packages with ES6 and Async functions support.
  • Start services and run tests with commands leveraging standard docker-compose files.
  • Debug containers with Node Inspector.
  • API support includes optional directory-based routing conventions to simplify microservice development.
  • Signal handling for graceful server shutdown in Docker containers.
  • Includes lint, format, and cover commands based on ESLint, esformatter, and isparta.

npm badge npm downloads

Caveats

  • Primarily for Docker-oriented development
  • Only testing with latest versions of Node.js and Alpine

Install

npm install -g atomiq-cli

Usage

$ atomiq <command> [options]

To see more command details, run

$ atomiq --help [or -h]

or

$ atomiq <command> --help [or -h]

The CLI is generally silent. To enable debug output, set the DEBUG environment variable for the type of project.

$ DEBUG=atomiq* atomiq <subcommand> [options]

Generating Projects

With the atomiq new command, you can generate api, app, and lib package projects.

API Generator

The API generator uses atomiq to provide lightweight structure and support useful for Express-based microservices. Atomiq is not a framework and doesn't get in the way of Express, but it does offer a nice convention for directory-based routing using ES6 classes that you can leverage if you choose to.

It generates a few sample routes using ES6 classes and provides a simple Node.js make script that supports building, running, and testing locally and in a Docker container.

This is a complete rewrite of the original CLI and also a replacement for the yeoman generator (generator-atomiq).

Atomiq CLI development for contributors

make.js script

This project has a make.js script that supports building, running, and testing both locally and in a Docker container.

  • node make clean - remove the dist directory
  • node make babel - transpile src to dist with sourcemaps (ES6 and async/await support)
  • node make build - transpile, then build a Docker image
  • node make run [--local] - start in container or start locally
  • node make test [--local] - run mocha tests in container or locally
  • node make debug [--local] - run with debugging support in container or locally
  • node make watch [--local] - when anything in src changes, re-transpile to dist

Development workflow

terminal #1

$ node make build
$ npm ln

# watch for changes in src and update dist
$ node make watch

terminal #2

$ DEBUG=atomiq* atomiq <subcommand> [options]

Testing

  $ node make test [--local]

Debugging

  $ node make debug [--local]

Open node inspector in browser

local:

  $ open http://192.168.99.100:8080/?ws=192.168.99.100:8080&port=5858

container:

 $ IP=$(docker-machine ip <machine>)
 $ open http://$IP:8080/?ws=$IP:8080&port=5858

atomiq-cli's People

Contributors

generalhenry avatar jdavanne avatar subfuzion avatar

Watchers

 avatar

atomiq-cli's Issues

lint and format

I've added linting and formatting to the projects but it should be moved to atomiq lint and atomiq format since atomiq-cli already has the dependencies

Update lib generator instructions

For the time being, update to specify npm install, npm test until atomiq test actually works for a non-Docker project (ie, uses npm test).

Update the README

Docs are out of date. Also, make sure to mention "missing" dependencies from package.json that are provided by the base image environment.

cover command

to get coverage working right, atomiq cover would need to be added to the api since the atomiq projects lack babel and isparta requires babel-node

Update templates with logging example code

We may want to get rid of debug now and just focus on real logging (can use the bunyan log viewer to see nice output in the shell). In any case, we should provide some log statement examples to correspond to the current debug-based log statements.

Remove docker-related files from CLI root

Might want to add a Dockerfile again at some point, but remove current files (they are artifacts from when this package was generated from the previous api generator).

Don't push dist directories

Add to generated .gitignore files, and add prepublish npm run script to build package on npm install and npm publish.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.