LoginSignup
0

More than 3 years have passed since last update.

「gulp-sftp-up4」を使って、gulpからSFTPアップをする

Posted at

目的

gulpで、ファイルのSFTPアップがしたい。
Gitで、コミット履歴からパスコピーしたものを元に、指定したファイルだけアップをしたい・

やったこと

gulp-sftpは、知っていたので使ってみたが、gulp4で使えなかった。
gulp-sftp-up4があった。

npm install gulp-sftp-up4 --save-dev

gulpfile.js

var fs = require('fs');
//設定ファイル
var ftp = JSON.parse(fs.readFileSync('config/ftp.json', 'utf8'));

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

// パス指定アップ
// 「upload」の後に「--」つけて「,」で区切る(スペースは入れない)
// npx gulp upload --aa/bb/ccc.html,aaaa.html
gulp.task('upload', function (done) {
  var npm_script_arg = process.argv.slice(3);
  var pathList = npm_script_arg[0].replace('--', '').split(',').map(function(v){
    let arrPath =  v.split('/');
    if(arrPath[0] === '') {
      arrPath.shift();
    }
    if(arrPath[0] === 'src') {
      arrPath.shift();
    }
    // 階層を保持してアップするため「**」つける
    arrPath.unshift('**');
    arrPath.unshift('src');

    // src/**/〜〜
    return arrPath.join('/');
  });

  gulp.src(pathList)
    .pipe(sftp(ftp));
  return done();
});

// srcフォルダの中身をごっそりアップ
gulp.task('upload-all', function (done) {
  gulp.src([
    'src/**/*'
  ])
  .pipe(sftp(ftp));
  return done();
});

備考

FTP情報はconfig/ftp.jsonで管理。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0