https://github.com/timkelty/shipit-captain
Run Shipit tasks from Gulp, or any task runner. Includes Inquirer.js prompts, CLI arguments, customized logging, and more.
https://github.com/timkelty/shipit-captain
Last synced: 11 months ago
JSON representation
Run Shipit tasks from Gulp, or any task runner. Includes Inquirer.js prompts, CLI arguments, customized logging, and more.
- Host: GitHub
- URL: https://github.com/timkelty/shipit-captain
- Owner: timkelty
- Created: 2015-07-10T20:55:43.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2016-11-13T05:14:38.000Z (over 9 years ago)
- Last Synced: 2025-07-08T22:06:32.146Z (11 months ago)
- Language: JavaScript
- Homepage:
- Size: 3.17 MB
- Stars: 24
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# shipit-captain
> Run [Shipit](https://github.com/shipitjs/shipit) tasks from Gulp, or any task runner. Includes [Inquirer.js](https://github.com/SBoudrias/Inquirer.js) prompts, [CLI arguments](https://github.com/bcoe/yargs), customized logging, and more.

## Why?
Shipit comes with its own [CLI](https://github.com/shipitjs/shipit#launch-command), but I wanted to integrate Shipit tasks into our existing task workflow, be it Gulp, Grunt, or anything else.
`shipit-captain` will let you easily do things like [set default environments](https://github.com/shipitjs/shipit/issues/38), log confirmation prompts, and easily integrate into Gulp tasks.
## Install
```sh
$ npm install --save shipit-captain
```
## Usage
You can organize your config files any way you like. Below is my preference, as it still allows `shipit-cli` commands to work, as well as those intended for `shipit-captain`. The only requirement is you must separate your `shipit.config` exports.
### Example `shipitfile.js`
```js
module.exports = require('./config/shipit').init;
```
### Example `config/shipit.js`
```js
var config = {
default: {
workspace: '/tmp/github-monitor',
deployTo: '/tmp/deploy_to',
repositoryUrl: 'https://github.com/user/repo.git',
ignores: ['.git', 'node_modules'],
keepReleases: 2,
deleteOnRollback: false,
key: '/path/to/key',
shallowClone: true
},
staging: {
servers: 'user@myserver.com'
}
};
module.exports.config = config;
module.exports.init = function(shipit) {
require('shipit-shared')(shipit);
shipit.initConfig(config);
}
```
### Example `gulpfile.js`
```js
var gulp = require('gulp');
var shipitCaptain = require('shipit-captain');
// With no options, will run shipit-deploy task by default.
gulp.task('shipit', function(cb) {
shipitCaptain(shipitConfig, cb);
});
// Run other after Shipit tasks are completed
gulp.task('myTask', ['shipit'], function(cb) {
console.log('Shipit tasks are done!');
cb();
});
// Pass options
var options = {
init: require('config/shipit').init,
run: ['deploy', 'clean'],
targetEnv: 'staging',
}
gulp.task('deploy', function(cb) {
shipitCaptain(shipitConfig, options, cb);
});
//
```
## API
### captain(shipitConfig, [options], [cb])
------
#### shipitConfig
`@param {object} shipitConfig`
> The config object you would normally pass to `shipit.initConfig`.
##### Gulp example:
```bash
gulp shipit -e production
```
------
#### options.run
`@param {string|string[]} [options.run=[]]`
> A string or array of strings of Shipit tasks to run. If not set, user will be prompted for a task to run from all available tasks.
> Users may set `options.run` manually, or by passing the `-r` or `--run` argument via the CLI. If set via CLI, comma-separate multiple tasks names.
##### Gulp example:
```bash
gulp shipit --run deploy,myOtherTask
```
------
#### options.availableEnvs
`@param {string[]} [options.availableEnvs]`
> By default this will be set to any environments defined in `shipitConfig`. This shouldn't normally need to be set.
------
#### options.confirm
`@param {boolean} [options.confirm=true]`
> Set to `false` to bypass the confirmation prompt.
------
#### options.logItems
`{function} [options.logItems(options, shipit)]`
##### Gulp example:
```js
var options = {
logItems: function(options, shipit) {
return {
'Environment': options.targetEnv,
'Branch': shipit.config.branch,
};
},
};
gulp.task('shipit', function(cb) {
shipitCaptain(shipitConfig, options, cb);
});
```
------
#### options.init
`{function} [options.init(shipit)]`
Require Shipit plugins or anything else you would have in your [`shipitfile`](https://github.com/shipitjs/shipit#example-shipitfilejs).
`shipit.initConfig` will be called automatically if it has not already been called.
##### Gulp example:
```js
var options = {
init: function(options, shipit) {
require('shipit-deploy')(shipit);
require('shipit-shared')(shipit);
}
};
gulp.task('shipit', function(cb) {
shipitCaptain(shipitConfig, options, cb);
});
```
------
#### cb
`{function} cb`
Optional callback function, called when all Shipit tasks are complete.
```js
var gulp = require('gulp');
var shipitCaptain = require('shipit-captain');
gulp.task('shipit', function(cb) {
shipitCaptain(shipitConfig, cb);
});
```
## License
MIT © [Tim kelty](http://fusionary.com)