Skip to content

Setup Modern Javascript Applications with a single command

License

Notifications You must be signed in to change notification settings

agneym/create-electrojet

Repository files navigation

logo rocket

ELECTROJET CLI

npm version code style: prettier coding style: standard

Usage

npm init electrojet <project-name>

The CLI will walk you through a set of options for you to select the template/starter.

Options

1. Template

This option allows you to select the template beforehand.

npm init electrojet <project-name> --template=electron

See list of currently available templates

2. Starter

This option allows you to select a starter beforehand.

npm init electrojet <project-name> --starter=<User>/<RepoName>

This format works for repositories hosted on github.

How do I customise it to work with Gitlab / Bitbucket?

How are they different?

A template offers a default configuration for a given technology. For eg. selecting electron as a template, gives you a package with Electron, Javascript, CSS and HTML.

A starter is much more customised and opiniated in it's design. For example, a starter may have Electron with React and Redux installed and setup for you to start working.

Why?

See announcement blog.

As a User:

😃 Get started without worrying about configuration

😋 Learn configuration for one CLI instead of a million ones

As a package owner:

🔧 You only have to manage the package extension, we will take care of the CLI and core.

🚀 The user might have Electrojet CLI installed globally/cached. Also, they might know their way around, so it's lesser docs.

☝️ Easier updates when extending the core package

How do I add _______ to the configuration?

  1. Add a plugin

    There are plugins available for Electrojet that can add functionality to existing configurations. You can add them to electrojet.config.js plugins array.

    List of Plugins

  2. Roll your own

    If you can't find a plugin, you can always write one.

    In your plugins directory, add a function that takes the format:

module.exports = {
  plugins: [
    {
      resolve: function (
        env,  // Current running env, either "dev" or "prod". Allows you to create multiple configs for development and production
        context,  // The current configuration, mutating this won't help
        options,  // options from the user, you don't need this for writing custom config
      ) {
        return customConfig; // Return custom configuration
      }
    }
  ]
}

The webpack configuration object that you return from the resolve functions gets shallow merged into running configuration.

List of available templates

  1. Electron
  2. Carlo
  3. Phaser CE
  4. Svelte

List of plugins

  1. SASS
  2. LESS

How do I build a CLI for my favorite technology?

  1. Install @electrojet/core for defaults in building Webpages.
  2. Use Node APIs for @electrojet/core to extend the start and build scripts.
  3. If you are building a Template (and not a starter, see difference), give us a PR to include in electrojet templates.

See any of the packages for an example.

Developing

  1. Clone the repository
  2. Run following command to install all dependencies
lerna bootstrap
  1. Make changes in your branch
  2. Run tests with:
lerna run test 
  1. Give us a PR

How do I customise it to with Bitbucket / Gitlab Templates

Docs in progress

About

Setup Modern Javascript Applications with a single command

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published