New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

gulp-sftp-up5

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gulp-sftp-up5

Upload files via SSH and working with gulp 5.0. Fork of original gulp-sftp-up5

  • 0.0.10
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

gulp-sftp-up5

一个简单用于 linux/win 的 sftp 程序,在(gulp-sftp-up4)的基础上进行改进,它可以实现当你打包以后自动将你的打包文件发送到远端服务器,不用借助于 gitlab 和 jenkins,但需要 package.json 的配合

安装

npm install --save-dev gulp-sftp-up5
// or
yarn add gulp-sftp-up5 -D

提示

如果你是 vue 或者 react,你可以配置的 package.json 的执行脚本,通过 cross-env 设置环境变量来调用 deploy.js 中的配置

 "scripts": {
    "dev": "vue-cli-service serve --mode dev",
    "build:test": "vue-cli-service build --mode build_test && cross-env APP_ENV=test npm run deploy",
    "build:prod": "vue-cli-service build --mode build_prod && cross-env APP_ENV=prod npm run deploy",
    "deploy": "node ./deploy.js"
  }

使用方式一(不安全)

// deploy.js

/**
 * 部署之前请检查好要部署的路径
 * 如有多个环境,自行拓展
 */
const gulp = require("gulp")
const path = require('path')
const sftp = require("gulp-sftp-up5")
// const CONFIG = require("./vue.config") // 只是为了保证上传的文件夹一致

const sftpConfig = {
  // 此处的key对应着package.json中脚本的 APP_ENV
  test: {
    remotePath: "/service/web", // 部署到服务器的路径
    host: "192.168.0.99", // 服务器地址
    user: "root", // 帐号
    pass: "1433223", // 密码
    port: 22, // 端口
    removeCurrentFolderFiles: true, // 该属性可删除 remotePath 下的所有文件/文件夹
  },
  prod: {
    remotePath: "/service/web", // 部署到服务器的路径
    host: "127.0.0.1", // 服务器地址
    user: "root", // 帐号
    pass: "1433223", // 密码
    port: 22, // 端口
    removeCurrentFolderFiles: true,
  },
}

// 采用管道流的方式将 outputDir 中的文件上传到远端
// gulp.src("./" + CONFIG.outputDir + "/**").pipe(sftp(sftpConfig[process.env.APP_ENV]))


gulp.src(path.resolve(__dirname, './dist.zip')).pipe(sftp(sftpConfig))

使用方式二(需配置SFTP属性)

  • 为了提高安全性,请将配置信息保存在名为.env.sftp的 json 格式的文件中(或保存为 options.authFile 设置的任何值)。 请确保将此文件添加到.gitignore
// .env.sftp  请严格按照JSON格式
{
  "test": {
    "user": "root",
    "pass": "123456",
    "host": "192.168.0.1",
    "port": 22
  },
  "prod": {
    "user": "root",
    "pass": "123456",
    "host": "192.168.0.",
    "port": 22
  }
}
// deploy.js

/**
 * 部署之前请检查好要部署的路径
 * 如有多个环境,自行拓展
 */
const gulp = require("gulp")
const path = require('path')
const sftp = require("gulp-sftp-up5")
// const CONFIG = require("./vue.config") // 只是为了保证上传的文件夹一致

const sftpConfig = {
  // 此处的key对应着package.json中脚本的 APP_ENV
  test: {
    remotePath: "/service/web", // 部署到服务器的路径
    SFTP: 'test', // 对应着.env.sftp的可以
    removeCurrentFolderFiles: true, // 该属性可删除 remotePath 下的所有文件/文件夹
  },
  prod: {
    remotePath: "/service/web", // 部署到服务器的路径
    SFTP: 'prod',
    removeCurrentFolderFiles: true,
  },
}

// 采用管道流的方式将 outputDir 中的文件上传到远端
// gulp.src("./" + CONFIG.outputDir + "/**").pipe(sftp(sftpConfig[process.env.APP_ENV]))


gulp.src(path.resolve(__dirname, './dist.zip')).pipe(sftp(sftpConfig)) // 0.0.10 以上支持,0.0.10 以下用上方的方式

配置参数

现改成压缩上传远端自动解压了,会在项目根目录下生成 dist.zip 文件,如果上传成功会将远端的dist.zip删除(0.0.10以上支持)

sftp(options)

options.host

Required
Type: String

options.port

Type: Number
Default: 22

options.user / username

Type: String
Default: "anonymous"

options.pass / password

Type: String
Default: null

如果未设置此选项,则 gulp-sftp 假定用户正在使用私钥身份验证,并且默认情况下将在以下位置使用密钥:

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

如果您打算使用匿名登录,请使用值"@anonymous"。

options.remotePath

Type: String
Default: "/"

上载到的远程路径。 如果此路径尚不存在,则会创建该路径以及包含文件的子目录。

options.remotePlatform

Type: String Default: "unix"

您要上传到的远程平台。 如果目标服务器是 Windows 计算机,则使用值“ windows”。

options.key

type String or Object Default: null

密钥文件位置。 如果是对象,请使用以下格式 {location:"/path/to/file",passphrase:"secretphrase"}

options.passphrase

type String Default: null

密钥身份验证的密码。 如果您的密钥不需要密码,请留空。

options.keyContents

type String Default: null

如果您希望直接通过 gulp 传递密钥,可以通过将其设置为 options.keyContents 来实现。

options.SFTP

type String Default: null

用于从 .env.sftp 访问身份验证信息的标识符,可使用 authFile 自定义文件名称。

options.authFile

type String Default: .ftppass

相对于项目根目录的路径,该路径是包含身份验证信息的 JSON 格式文件的路径。

options.timeout

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

一个整数,以毫秒为单位,指定等待服务器响应的时间。

options.agent

type String Default: null

ssh-agent 的 UNIX 套接字的路径,用于基于 ssh-agent 的用户身份验证。

options.agentForward

type bool Default: false

设置为 true 以使用 OpenSSH 代理转发。 要求配置“ options.agent”。

options.callback

type function Default: null

SFTP 连接关闭后将调用回调函数。

options.removeCurrentFolderFiles

type bool Default: false

用于删除文件夹(remotePath)远端对应的文件夹底下的所有文件,规避了历史文件的冗余,有一定的风险,请务确保路径的正确

options.customCommand

type String Default: null

用于添加可执行自定义命令行,它操作的命令行一般都在 remotePath 目录下运行,当然,你也可以通过自定义命令行去控制执行路径,不过此风险相当大,慎用

如要使用 pem 创建私钥和证书来访问服务器:

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,
      })
    )
  })
})

Keywords

FAQs

Package last updated on 23 Oct 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc