atom-package-deps
v8.0.0
Published
Automatically install package dependencies
Downloads
1,468
Readme
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.