Skip to content

steelbrain/package-deps

Repository files navigation

Atom-Package-Deps

Atom-Package-Deps is a module that lets your atom package depend on other atom packages, It's quite simple and shows a nice progress bar as a notification as the packages are installed.

How it works?

You need to have an array of package deps in your package manifest, like

{
  "name": "linter-ruby",
  ...
  "package-deps": [{ "name": "linter" }]
}

If only the name of the package is needed, you can specify the name directly as a string instead of an object for that entry:

  "package-deps": ["linter"]

You can also specify the minimum required version (version not semver-range!) of the package, or give users a choice by specifying multiple ones.

{
  "name": "linter-ruby",
  ...
  "package-deps": [
    // Add a dependency on a package:
    { "name": "linter", "minimumVersion": "2.0.0" },
    // Add a dependency in any of the following packages,
    // so if one is already installed, user is not prompted to install the other
    [ { "name": "linter" }, { "name": "atom-ide-ui" } ]
  ]
}

Because the package installation is async, it returns a promise that resolves when all the dependencies have been installed.

'use babel'

module.exports = {
  activate() {
    // replace the example argument 'linter-ruby' with the name of this Atom package
    require('atom-package-deps')
      .install('linter-ruby')
      // ^ NOTE: This is the name of YOUR package, NOT the package you want to install.
      .then(function() {
        console.log('All dependencies installed, good to go')
      })
  },
}

API

You can use this package programatically via this exported interface:

export function install(packageName: string, hideUserPrompt: boolean = false)

Alternatively, if you want to install dependencies via CLI, this package exposes a bin for that

Usage: atom-package-deps <directory> <hideUserPrompt = true>

Screenshots

Installation Prompt

Installation Prompt with choices:

Installation Progress

Installation Complete

License

This project is licensed under the terms of MIT license, See the LICENSE file for more info.

About

Automatically install dependencies for your atom packages

Resources

License

Stars

Watchers

Forks

Packages

No packages published