• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

gtg092x/gulp-sftp: Gulp SFTP Deploy

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

gtg092x/gulp-sftp

开源软件地址(OpenSource Url):

https://github.com/gtg092x/gulp-sftp

开源编程语言(OpenSource Language):

JavaScript 100.0%

开源软件介绍(OpenSource Introduction):

gulp-sftp Build Status

Upload files via SSH

Useful for uploading and deploying things via sftp. Right now this plugin just uploads everything. Caching and hash comparison are two TODO items.

NPM

Install

$ npm install --save-dev gulp-sftp

Usage

var gulp = require('gulp');
var sftp = require('gulp-sftp');

gulp.task('default', function () {
	return gulp.src('src/*')
		.pipe(sftp({
			host: 'website.com',
			user: 'johndoe',
			pass: '1234'
		}));
});

API

sftp(options)

options.host

Required
Type: String

options.port

Type: Number
Default: 22

options.user

Type: String
Default: 'anonymous'

options.pass

Type: String
Default: null

If this option is not set, gulp-sftp assumes the user is using private key authentication and will default to using keys at the following locations:

~/.ssh/id_dsa and /.ssh/id_rsa

If you intend to use anonymous login, use the value '@anonymous'.

options.remotePath

Type: String
Default: '/'

The remote path to upload to. If this path does not yet exist, it will be created, as well as the child directories that house your files.

options.remotePlatform

Type: String Default: 'unix'

The remote platform that you are uploading to. If your destination server is a Windows machine, use the value windows.

options.key

type String or Object Default: null

A key file location. If an object, please use the format {location:'/path/to/file',passphrase:'secretphrase'}

options.passphrase

type String Default: null

A passphrase for secret key authentication. Leave blank if your key does not need a passphrase.

options.keyContents

type String Default: null

If you wish to pass the key directly through gulp, you can do so by setting it to options.keyContents.

options.auth

type String Default: null

An identifier to access authentication information from .ftppass see Authentication for more information.

options.authFile

type String Default: .ftppass

A path relative to the project root to a JSON formatted file containing auth information.

options.timeout

type int Default: Currently set by ssh2 as 10000 milliseconds.

An integer in milliseconds specifying how long to wait for a server response.

options.agent

type String Default: null

Path to ssh-agent's UNIX socket for ssh-agent-based user authentication.

options.agentForward

type bool Default: false

Set to true to use OpenSSH agent forwarding. Requires that options.agent is configured.

options.callback

type function Default: null

Callback function to be called once the SFTP connection is closed.

##Authentication

For better security, save authentication data in a json formatted file named .ftppass (or to whatever value you set options.authFile to). Be sure to add this file to .gitignore. You do not typically want auth information stored in version control.

var gulp = require('gulp');
var sftp = require('gulp-sftp');

gulp.task('default', function () {
	return gulp.src('src/*')
		.pipe(sftp({
			host: 'website.com',
			auth: 'keyMain'
		}));
});

.ftppass

{
  "keyMain": {
    "user": "username1",
    "pass": "password1"
  },
  "keyShort": "username1:password1",
  "privateKey": {
    "user": "username"
  },
  "privateKeyEncrypted": {
    "user": "username",
    "passphrase": "passphrase1"
  },
  "privateKeyCustom": {
    "user": "username",
    "passphrase": "passphrase1",
    "keyLocation": "/full/path/to/key"
  }
}

##Work with pem

To use pem create private keys and certificates for access your server:

var pem = require('pem');
gulp.task('deploy:test', function () {
    pem.createCertificate({}, function (err, kyes) {
        return gulp.src('./src/**/*')
            .pipe(sftp({
                host: 'testserver.com',
                user: 'testuser',
                pass: 'testpass',
                key: kyes.clientKey,
                keyContents: kyes.keyContents
            }));
    });
});

##Known Issues

###SFTP error or directory exists: Error: No such file /remote/sub/folder

Version 0.1.2 has an issue for Windows clients when it comes to resolving remote paths. Please upgrade to 0.1.3.

###Error:: SFTP abrupt closure

Some conditions can cause the ssh2 connection to abruptly close. The issues that commonly cause this are large files (though they are checked for and are automatically converted to streams) and heavy memory usage.

To solve problems related to ssh2 closures, try to use streams instead of buffers. Do this by passing {buffer:false} as an option with gulp.src. This isn't always an option, so I would suggest exploring ways to move between streams and buffers. Lars Kappert has a great article on managing this.

Some awesome work via @mscdex addressed this issue. Please make sure you have the latest version or greater of gulp-sftp (0.1.1) and the latest version or greater of ssh2 (0.3.4) and you should not see abrupt disconnects with large files.

License

MIT




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lisposter/gulp-docs-zh-cn: gulp docs in Chinese发布时间:2022-06-21
下一篇:
sindresorhus/gulp-ruby-sass: Compile Sass to CSS with Ruby Sass发布时间:2022-06-21
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap