grunt-sftp-deploy не умеет удалять файлы/папки, он умеет только копировать файлы/папки на хостинг, а так же обновлять их, если они обновились.
Gruntfile.js
--------------
'sftp-deploy': { // умеет заменять файлы/папки, но не умеет удалять
build: {
auth: {
host: 'ssh.myhost.com',
port: 22,
authKey: 'key1'
},
cache: 'sftpCache.json',
src: 'build/',
dest: './',
exclusions: [
'/path/to/source/folder/**/.DS_Store',
'/path/to/source/folder/**/Thumbs.db',
'dist/tmp'
],
serverSep: '/', // Useful if you deploy from Windows to Unix
concurrency: 4, // to define the number of concurrent file transfer
progress: true // to display or not the progress bar
}
}
Создаем файл .ftppass для хранения настроек аутентификации
{
"key1": {
"username": "my_login",
"password": "my_pass"
},
"privateKeyEncrypted": {
"username": "my_login",
"passphrase": "my_passphrase"
},
"privateKeyCustom": {
"username": "my_login",
"passphrase": "my_passphrase",
"keyLocation": "~/.ssh/id_rsa"
}
}
Gruntfile.js
--------------
secret: grunt.file.readJSON('secret.json'),
sftp: {
copy: {
files: {
"./1": "1/*" // "куда_копировать" : "что_копировать"
},
options: {
// path: '/tmp/',
host: '<%= secret.host %>',
username: '<%= secret.username %>',
passphrase: '<%= secret.passphrase %>',
privateKey: '<%= grunt.file.read(secret.keyPath) %>',
// password: '<%= secret.password %>',
showProgress: true
}
}
},
sshexec: {
rm: {
command: [
// 'ls -la ./1'
'rm -rf ./1/*', // -f не выводить сообщение, если каталога не существует
],
options: {
host: '<%= secret.host %>',
username: '<%= secret.username %>',
passphrase: '<%= secret.passphrase %>',
privateKey: '<%= grunt.file.read(secret.keyPath) %>',
// password: '<%= secret.password %>',
}
}
}
secret.json
--------------
{
"host" : "ssh.my.com",
"username" : "my_username",
"password" : "my_password",
"passphrase" : "my_passphrase",
"keyPath" : "/home/username/.ssh/id_rsa" // только /home. Так ~/ не прокатит. Удалить этот комментарий
}
Gruntfile.js
--------------
grunt.registerTask('dossh', ['sshexec:rm','sftp:copy']);
Gruntfile.js
--------------
'sftp-deploy': { // умеет заменять файлы/папки, но не умеет удалять
build: {
auth: {
host: 'ssh.myhost.com',
port: 22,
authKey: 'key1'
},
cache: 'sftpCache.json',
src: 'build/',
dest: './',
exclusions: [
'/path/to/source/folder/**/.DS_Store',
'/path/to/source/folder/**/Thumbs.db',
'dist/tmp'
],
serverSep: '/', // Useful if you deploy from Windows to Unix
concurrency: 4, // to define the number of concurrent file transfer
progress: true // to display or not the progress bar
}
}
Создаем файл .ftppass для хранения настроек аутентификации
{
"key1": {
"username": "my_login",
"password": "my_pass"
},
"privateKeyEncrypted": {
"username": "my_login",
"passphrase": "my_passphrase"
},
"privateKeyCustom": {
"username": "my_login",
"passphrase": "my_passphrase",
"keyLocation": "~/.ssh/id_rsa"
}
}
Делаем деплой с помощью grunt-ssh
Сначала очистим директории, затем скопируем туда файлы.
--------------
secret: grunt.file.readJSON('secret.json'),
sftp: {
copy: {
files: {
"./1": "1/*" // "куда_копировать" : "что_копировать"
},
options: {
// path: '/tmp/',
host: '<%= secret.host %>',
username: '<%= secret.username %>',
passphrase: '<%= secret.passphrase %>',
privateKey: '<%= grunt.file.read(secret.keyPath) %>',
// password: '<%= secret.password %>',
showProgress: true
}
}
},
sshexec: {
rm: {
command: [
// 'ls -la ./1'
'rm -rf ./1/*', // -f не выводить сообщение, если каталога не существует
],
options: {
host: '<%= secret.host %>',
username: '<%= secret.username %>',
passphrase: '<%= secret.passphrase %>',
privateKey: '<%= grunt.file.read(secret.keyPath) %>',
// password: '<%= secret.password %>',
}
}
}
secret.json
--------------
{
"host" : "ssh.my.com",
"username" : "my_username",
"password" : "my_password",
"passphrase" : "my_passphrase",
"keyPath" : "/home/username/.ssh/id_rsa" // только /home. Так ~/ не прокатит. Удалить этот комментарий
}
Gruntfile.js
--------------
grunt.registerTask('dossh', ['sshexec:rm','sftp:copy']);
Комментариев нет:
Отправить комментарий