inossidabile / grunt-ftpush Goto Github PK
View Code? Open in Web Editor NEWGrunt task for incremental code deployment over ftp
Grunt task for incremental code deployment over ftp
Filezilla server in particular does not support the STAT command. This means that when I try to deploy, if the remote directory structure does not exist beforehand (even if empty) the deploy stalls and throws:
Error: read ECONNRESET
at errnoException (net.js:901:11)
at TCP.onread (net.js:556:19)
So it is much like extending the "track changes" feature to grunt-sftp-deploy too.
When I try to use ftpush to upload my site, it seems to be doubling up the paths.
I thought I knew what this error was saying, but then I looked at the code that generates it, and I no longer have any idea what's going on.
Warning: Cannot delete file: /dev.bmc/.gitignore --> Error: 550 /dev.bmc/dev.bmc/.gitignore: No such file or directory Use --force to continue.
If I actually give it the entire path, I get something morelike this:
Warning: Cannot delete file: /dev.bmc/blog/wp-content/themes/benchmark/404.php --> Error: 550 /dev.bmc/blog/wp-content/themes/benchmark/dev.bmc/blog/wp-content/themes/benchmark/404.php: No such file or directory Use --force to continue.
Any idea what is going on?
Hi there,
I'm fairly new to grunt and ftpush and I'm currently looking for a way to automatically upload my compiled css and js files to the server when my less files or main javascript have changed.
So in my Gruntfile.js I added this at the bottom:
grunt.loadNpmTasks('grunt-ftpush');
and this in the watch task:
grunt.initConfig({
watch: {
// other watch tasks
ftpush: {
build: {
auth: {
host: 'ftp.mydomain.com',
port: 21,
authKey: 'dev'
},
src: 'assets/test/',
dest: '/assets/test/'
}
}
},
});
But I keep getting the following error when I run grunt watch
:
Running "watch" task
Waiting...Verifying property watch.ftpush.files exists in config...ERROR
>> Unable to process task.
Warning: Required config property "watch.ftpush.files" missing.
I tried adding simple: true
but that doesn't help.
Am I missing something? Thanks!
First off, thanks for this. I've got it working and it is already saving me time and bandwidth. I do have a feature request though. It would be great to add the option to transfer via FTPS in addition to FTP.
With the exact same configuration, grunt-ftp-deploy works just fine. But when calling grunt ftpush, this is all that happens:
C:\wamp\www\site>grunt ftpush
Running "ftpush:build" (ftpush) task
C:\wamp\www\site>
Configuration:
'ftp-deploy': {
build: {
auth: {
host: '127.0.0.1',
port: 21
},
src: 'app',
dest: 'root',
exclusions: [
'app/tmp',
'app/node_modules',
'app/composer.*',
'app/webroot/.sass-cache',
'app/webroot/config.rb',
'app/webroot/js/full',
'app/webroot/css/sass',
'*.sql',
'*.svn',
'*.git',
],
keep: [
'app/webroot/img/uploads/*',
'app/webroot/community/*',
]
}
}
Another thing I noticed was that I cannot seem to be able to set the current folder as src. How is this possible? I've tried setting src to '/', '', '', '*' but nothing has worked.
I'm trying to use ftpush to upload css files after compiling sass and minifying the css. So, there are two css files in my local directory that are supposed to get uploaded. This is the result I always get:
Running "ftpush:sass" (ftpush) task
>> Authenticated as username
>> Got diff for / 2 0 0
>> Uploaded file: styles.css to: /
And then it just stays like that forever. No error code or anything, even after waiting over half an hour. I'm running Ubuntu 14.04.
Works like a charm, but sometimes I get this error and I'm forced to restart the task. It will eventually work
Warning: Cannot delete file: 17:04 randomfile.php --> Error: 550 Could not delete / www/17:04 randomfile.php: No such file or directory Use --force to continue.
In this specific case, that's not a file to be deleted or updated. It's just a random file. Happened on other files as well.
thanks
I am running into this error whenever I try and upload. It tries to delete "/public_html/change/bower_components/font-awesome/src/3.2.1/icon/craigmcn" which doesn't exist. There is no file with that name in my dist folder (which is what I'm uploading). craigmcn is my ftp username specified in my .ftppass file. I'm not sure how its joining those two pieces of information together.
>> Got diff for /styles 2 0 0
>> Uploaded file: .htaccess to: /
Warning: Cannot delete file: craigmcn 4096 Mar 8 18:05 building --> Error: 550 Could not delete /public_html/change/bower_components/font-awesome/src/3.2.1/icon/craigmcn 4096 Mar 8 18:05 building: No such file or directory Use --force to continue.
Aborted due to warnings.
I've also tried with --force and --simple, same error with both.
Config
ftpush: {
build: {
auth: {
host: 'craigmcnamara.com',
port: 21,
authKey: 'key1'
},
src: '<%= yeoman.dist %>',
dest: '/public_html/change',
exclusions: ['<%= yeoman.dist %>/**/.DS_Store', '<%= yeoman.dist %>/**/Thumbs.db', '<%= yeoman.dist %>/tmp'],
simple: false,
keep: [],
useList: false
}
},
When using large files names the diff seems to fail:
Warning: Cannot delete file: b8079fd5616ee9b5d34b8a93699c3e38a --> Error: 550 /domainsdomain.com/core/cache/b8079fd5616ee9b5d34b8a93699c3e38a: No such file or directory Use --force to continue.
Aborted due to warnings.
Tried to do a 2MB upload but it failed with "Fatal error: read ETIMEDOUT".
It did manage to upload the other ~50 files and create directories but couldn't do the last ~10.
(simple:false)
I'm receiving an error when trying to upload a directory that doesn't yet exist on the remote ftp server.
Error: read ECONNRESET
at errnoException (net.js:901:11)
at TCP.onread (net.js:556:19)
I'm using filezilla on the remote and in it's log it's fine until ftpush tries to touch a directory that doesn't exists. Filezilla then logs:
list dir/dir
550 Directory not found.
disconnected
Instead of creating the directory, ftpush is throwing the error.
I'm using ftpush v0.3.3
ftpush: {
build: {
auth: {
host: '1.1.2.1',
port: 21,
authKey: 'key1'
},
src: '../j/demo/',
dest: '/demo/j/demo/'
}
}
bug: Fatal error: read ECONNRESET
because: dest: '/demo/j/demo/' demo have twice
First off great work on this plugin, just what I'm looking for in terms of my workflow. Unfortunately I'm having an issue when simple=true is set.
When Simple=false everything works as expected and all directories are created and uploaded without issue.
However when I switch to simple=true I am experiencing issues with blank directories being created in the root and proper directory structures not being created.
For example I have a directory '/includes' which already exists locally and on the remote server. If I add a file 'new_file.php' to that directory and run ftpush then the file will be uploaded successfully to /includes. However a new blank directory called "\includes" is added to the remote root.
If I then add new directory and file locally at /includes/test_folder/test_file.php on running ftpush a single blank directory is added to the remote server root with name "\includes\test_folder" and the following warning is outputted:
Uploaded file: test_file.php to: \includes\test_folder
Fatal error: read ECONNRESET
\includes\test_folder is not created. If I go and manually add the \includes\test_folder on the remote server and attempt ftpush it will work and test_file.php is uploaded.
My setup is as follows:
auth: {
host: 'host',
port: 21,
authKey: 'dev'
},
src: '',
dest: '/',
exclusions: ['assets/pdf''],
keep: ['/assets/pdf/*.pdf'],
simple:true
}
I've tired changing dest to be a blank string but it has no effect. Please let me know if you would like me to provide any other information on this.
The grunt-contrib
prefix is reserved for officially supported grunt tasks in the grunt org.
Please rename this task to not use the contrib
word both here and on npm.
(I'm on the Grunt team)
I'm trying to upload a couple of things onto an ftp server but I keep getting Fatal error: read ECONNRESET.
I'm running on ebug mode and this is what I get:
Debug
[D] Switching to simple mode...
[D] Touch 'test'
[D] Touch 'test/app'
[D] Touch 'test/app/product'
[D] Touch 'test/app/product/resources'
[D] Touch 'test/app/product/resources/css'
[D] Upload 'app.css' '/css' 'f04f036da18507d19e4fcb94c0285897'
Fatal error: read ECONNRESET
So, now it's working very nicely, but I have one question about how it decides that something needs to be reuploaded.
My usecase is the following: Using grunt I build the deploy version, which is the one one that gets uploaded. Every time I build it, it cleans out the prior versions, and I now noticed that it will re-upload every single file, not just the ones that's actually changed (should've been one file changed, one removed and one added in my particular experiment).
I take it that rather than comparing the hash, it compares modification date? Or is it working off of something else that changes when I build a fresh copy?
ftpush doesn't seem to create directories.
Running "ftpush:dist" (ftpush) task
[D] Task source: /Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/tasks/ftpush.coffee
>> Authenticated as hawkrives
[D] Touch '/dev.bmc/wp-content/themes/benchmark/'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/fonts'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img/icons'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img/samples'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/js'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/inc'
>> Got diff for / 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /_ 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /_/fonts 8 0 0
[D] Diff { upload:
[ [ 'bosnia-thin-bold.eot', 1375111258000 ],
[ 'bosnia-thin-bold.svg', 1375111258000 ],
[ 'bosnia-thin-bold.ttf', 1375111258000 ],
[ 'bosnia-thin-bold.woff', 1375111258000 ],
[ 'bosnia-thin-normal.eot', 1375111258000 ],
[ 'bosnia-thin-normal.svg', 1375111258000 ],
[ 'bosnia-thin-normal.ttf', 1375111258000 ],
[ 'bosnia-thin-normal.woff', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'bosnia-thin-bold.eot' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-bold.svg' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-bold.ttf' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-bold.woff' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-normal.eot' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-normal.svg' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-normal.ttf' '/_/fonts' 1375111258000
[D] Upload 'bosnia-thin-normal.woff' '/_/fonts' 1375111258000
>> Got diff for /_/img 6 0 0
[D] Diff { upload:
[ [ 'chalk.png', 1375111258000 ],
[ 'light_wool.png', 1375111258000 ],
[ '[email protected]', 1375111258000 ],
[ 'logo.png', 1375111258000 ],
[ 'logo.svg', 1375111258000 ],
[ 'low_contrast_linen.png', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'chalk.png' '/_/img' 1375111258000
[D] Upload 'light_wool.png' '/_/img' 1375111258000
[D] Upload '[email protected]' '/_/img' 1375111258000
[D] Upload 'logo.png' '/_/img' 1375111258000
[D] Upload 'logo.svg' '/_/img' 1375111258000
[D] Upload 'low_contrast_linen.png' '/_/img' 1375111258000
>> Got diff for /_/img/icons 12 0 0
[D] Diff { upload:
[ [ 'badge.png', 1375111258000 ],
[ 'badge.svg', 1375111258000 ],
[ 'group.png', 1375111258000 ],
[ 'group.svg', 1375111258000 ],
[ 'home.png', 1375111258000 ],
[ 'home.v1.png', 1375111258000 ],
[ 'plant.png', 1375111258000 ],
[ 'plant.svg', 1375111258000 ],
[ 'suitcase.png', 1375111258000 ],
[ 'suitcase.svg', 1375111258000 ],
[ 'tower.png', 1375111258000 ],
[ 'tower.svg', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'badge.png' '/_/img/icons' 1375111258000
[D] Upload 'badge.svg' '/_/img/icons' 1375111258000
[D] Upload 'group.png' '/_/img/icons' 1375111258000
[D] Upload 'group.svg' '/_/img/icons' 1375111258000
[D] Upload 'home.png' '/_/img/icons' 1375111258000
[D] Upload 'home.v1.png' '/_/img/icons' 1375111258000
[D] Upload 'plant.png' '/_/img/icons' 1375111258000
[D] Upload 'plant.svg' '/_/img/icons' 1375111258000
[D] Upload 'suitcase.png' '/_/img/icons' 1375111258000
[D] Upload 'suitcase.svg' '/_/img/icons' 1375111258000
[D] Upload 'tower.png' '/_/img/icons' 1375111258000
[D] Upload 'tower.svg' '/_/img/icons' 1375111258000
>> Got diff for /_/img/samples 3 0 0
[D] Diff { upload:
[ [ 'abla.jpg', 1375111258000 ],
[ 'faubush.jpg', 1375111258000 ],
[ 'millsap.jpg', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'abla.jpg' '/_/img/samples' 1375111258000
[D] Upload 'faubush.jpg' '/_/img/samples' 1375111258000
[D] Upload 'millsap.jpg' '/_/img/samples' 1375111258000
>> Got diff for /_/js 6 0 0
[D] Diff { upload:
[ [ 'foundation.min.js', 1375111258000 ],
[ 'foundation.orbit.js', 1375111258000 ],
[ 'jquery.min.js', 1375111258000 ],
[ 'jquery.transit.min.js', 1375111258000 ],
[ 'magnific-popup.min.js', 1375111258000 ],
[ 'modernizr-2.6.2.js', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'foundation.min.js' '/_/js' 1375111258000
[D] Upload 'foundation.orbit.js' '/_/js' 1375111258000
[D] Upload 'jquery.min.js' '/_/js' 1375111258000
[D] Upload 'jquery.transit.min.js' '/_/js' 1375111258000
[D] Upload 'magnific-popup.min.js' '/_/js' 1375111258000
[D] Upload 'modernizr-2.6.2.js' '/_/js' 1375111258000
>> Got diff for /inc 5 0 0
[D] Diff { upload:
[ [ 'custom-header.php', 1375111258000 ],
[ 'customizer.php', 1375111258000 ],
[ 'extras.php', 1375111258000 ],
[ 'jetpack.php', 1375111258000 ],
[ 'template-tags.php', 1375111258000 ] ],
rm: [],
rmDir: [] }
[D] Upload 'custom-header.php' '/inc' 1375111258000
[D] Upload 'customizer.php' '/inc' 1375111258000
[D] Upload 'extras.php' '/inc' 1375111258000
[D] Upload 'jetpack.php' '/inc' 1375111258000
[D] Upload 'template-tags.php' '/inc' 1375111258000
>> Uploaded file: bosnia-thin-bold.eot to: /_/fonts
If I go create _/fonts
before running the task, ftpush
makes it through the fonts
folder, but sticks on img
โ which, combined with the fact that no folders are showing up on the server, makes me think that ftpush
is failing to create the directory structure.
@inossidabile update please dependencies
Hi there!
So, I've started to look into using this task, and I'm running into an issue that I'm hoping you at least have some ideas about:
I'm running the task the very first time now, and it freezes after I've finished uploading one particular file. There is no feedback on what's going on, it's just sitting there, chewing.
Are there any error messages I can activate? Any other way of figuring out where/why this fails?
I have the latest version of ftpush as part of my grunt package. Each time I try to push, I get a variation of some kind of stall.
I run
grunt ftpush
And get
>> Authenticated as user
And then nothing. Or sometimes a few files get pushed, but then a stall. The only consistency is that it never finishes and stalls at some point all the time. Ftpush is configured as
ftpush:{
build:{
auth:{
host:'host',
port:21,
authKey:'key1' // found in .ftppass
},
src:'/Applications/AMPPS/www/projectdirectory/',
dest:'/projectdirectory/',
exclusions:['*/.DS_Store','.DS_Store','Archive.zip','.git','Gruntfile.js','node_modules','*.sql'],
simple:true,
useList:true
}
}
Hi there,
I have been using ftpush for quit a while now and have added it to my grunt watch command in one of my projects. As of today I'm getting an Unexpected token
error, while nothing has changed to my Gruntfile.js or .ftppass files?
Running "ftpush:build" (ftpush) task
Warning: Unexpected token < Use --force to continue.
When I try to connect with the exact same FTP credentials everything works fine?
Any idea what might be causing this and how exactly do I use this --force
parameter?
I removed my node_modules folder and reinstalled with npm install
but that doesn't make a difference.
Thanks!
Somewhere in between 0.3.2 and 0.3.3 this task stopped working for some of our devs on Mac.
The task is sending "STAT" commands to our FTP server (filezilla) which does not support "STAT"
I keep getting the following error when I try to use ftpush:
Running "ftpush:build" (ftpush) task
Warning: EACCES, permission denied '/.DocumentRevisions-V100' Use --force to continue.
Any ideas as to why? I'm trying to upload my files to godaddy shared hosting. I have used ftp_push in the past and everything has worked fine with it.
it used to work perfectly and now im stuck with this error "Error on ftp socket: Error: read ECONNRESET"
any idea?
When I use keep
with a folder how is direct in the root directory it works perfect.
My working example:
ftpush: {
build: {
auth: {
host: 'server.com',
port: 21,
authKey: 'key'
},
src: 'dist',
dest: '/',
keep: ['/folder']
}
}
But if I use keep
with a subfolder, all elements in the subfolder and the subfolder itself will be deleted on the server.
I tested it with:
keep: ['/folder/subfolder']
keep: ['/folder/subfolder/']
keep: ['/folder/subfolder/*']
keep: ['/folder/subfolder/**']
but nothing works.
I use Windows 7 and Node.js 0.10.31.
Package.json contains wrong URLs to grunt-ftpush repository, homepage and issues tracker.
"inossidabile" is spelled wrongly as "inossidabule"
Running "ftpush:dist" (ftpush) task
[D] Task source: /Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/tasks/ftpush.coffee
>> Authenticated as hawkrives
[D] Touch '/dev.bmc/wp-content/themes/benchmark/'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/fonts'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img/icons'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/img/samples'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/_/js'
[D] Touch '/dev.bmc/wp-content/themes/benchmark/inc'
>> Got diff for / 20 0 0
[D] Diff { upload:
[ [ '404.php', 1375118497000 ],
[ 'archive.php', 1375118497000 ],
[ 'comments.php', 1375118497000 ],
[ 'content-page.php', 1375118497000 ],
[ 'content-single.php', 1375118497000 ],
[ 'content.php', 1375118497000 ],
[ 'footer.php', 1375118497000 ],
[ 'functions.php', 1375118497000 ],
[ 'header.php', 1375118497000 ],
[ 'image.php', 1375118497000 ],
[ 'index.php', 1375118497000 ],
[ 'no-results.php', 1375118497000 ],
[ 'page.php', 1375118497000 ],
[ 'screenshot.png', 1375118497000 ],
[ 'search.php', 1375118497000 ],
[ 'searchform.php', 1375118497000 ],
[ 'sidebar.php', 1375118497000 ],
[ 'single-proof.php', 1375118497000 ],
[ 'single.php', 1375118497000 ],
[ 'style.css', 1375118497000 ] ],
rm: [],
rmDir: [] }
[D] Upload '404.php' '/' 1375118497000
[D] Upload 'archive.php' '/' 1375118497000
[D] Upload 'comments.php' '/' 1375118497000
[D] Upload 'content-page.php' '/' 1375118497000
[D] Upload 'content-single.php' '/' 1375118497000
[D] Upload 'content.php' '/' 1375118497000
[D] Upload 'footer.php' '/' 1375118497000
[D] Upload 'functions.php' '/' 1375118497000
[D] Upload 'header.php' '/' 1375118497000
[D] Upload 'image.php' '/' 1375118497000
[D] Upload 'index.php' '/' 1375118497000
[D] Upload 'no-results.php' '/' 1375118497000
[D] Upload 'page.php' '/' 1375118497000
[D] Upload 'screenshot.png' '/' 1375118497000
[D] Upload 'search.php' '/' 1375118497000
[D] Upload 'searchform.php' '/' 1375118497000
[D] Upload 'sidebar.php' '/' 1375118497000
[D] Upload 'single-proof.php' '/' 1375118497000
[D] Upload 'single.php' '/' 1375118497000
[D] Upload 'style.css' '/' 1375118497000
/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-contrib-compass/node_modules/tmp/lib/tmp.js:260
throw err;
^
TypeError: Cannot read property 'length' of undefined
at /Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/tasks/ftpush.coffee:245:22
at entriesToList (/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/lib/jsftp.js:759:29)
at /Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/lib/jsftp.js:787:21
at parse (/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/lib/jsftp.js:419:21)
at onElement (/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/node_modules/streamer/core.js:195:36)
at Socket.<anonymous> (/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/lib/jsftp.js:357:25)
at Array.forEach (native)
at Socket.<anonymous> (/Users/hawken/Dropbox/Benchmark Website/site/theme/node_modules/grunt-ftpush/node_modules/jsftp/lib/jsftp.js:338:23)
at Socket.EventEmitter.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:736:14)
ftpush
appears to fail as soon as it hits the first empty directory.
(I've taken to blowing away both the .grunt/ftpush folder and the remote one on update, to remove an extra spot of altercation.)
Hi, I've had ftpush working successfully in the past, but now it only does if I start with an empty FTP directory. If I push again into an existing directory with only one updated file, I get a 213 error and a message that a file can't be uploaded.
I tried a run using --debug and saw that the file was getting added to the queue.
Happy to provide more info if you need it. Thanks.
grunt-ftppush follows symlinks and uploads symlinked folders twice. There should be an option to disable following symlinks.
Would be nice if I can put all my credential files and non-repo files in a folder called secret/ rather than having to exclude one by one each new file in some kind of .ignore file. Would also help keep secret files secret form other devs with less permissions.
// don't keep passwords in source control
config: 'secret/.servers.json',
(inspired by https://github.com/andrewrjones/grunt-ssh)
Also, would probably make sense to put host and port info into the json file as the host and port generally don't change for a given authentication process.
Hi ino
I have this config section in Gruntfile.js:
ftpush: {
prod: {
auth: {
host: 'ftp.xxxxxxxx.net',
port: 21,
authKey: 'myKey'
},
src: './web/',
dest: '/www/upload/',
exclusions: ['./web/**/.DS_Store']
}
},
There are a few .DS_Store files in ./web/ folder and subtree and all are sent to FTP. I don't understand why... I try delete .grunt folder as well as remote FTP folder, but still copying those MAC files...
Hi,
after first successful deployment using ftpush, the same task executed again fails with error 550 on files belonging to jQuery UI.
Relevant part from debug log:
[D] Switching to full synchronization mode...
[D] Touch '/public/components/'
[D] Touch '/public/components/fancybox'
[D] Touch '/public/components/fancybox/lib'
[D] Touch '/public/components/fancybox/source'
[D] Touch '/public/components/fancybox/source/helpers'
[D] Touch '/public/components/jquery'
[D] Touch '/public/components/jquery-migrate'
[D] Touch '/public/components/jquery-ui'
[D] Touch '/public/components/jquery-ui/ui'
[D] Touch '/public/components/jquery-ui/ui/i18n'
[D] Touch '/public/components/jquery-ui/ui/minified'
[D] Touch '/public/components/jquery-ui/ui/minified/i18n'
>> Got diff for / 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /fancybox 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /fancybox/lib 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /fancybox/source 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /fancybox/source/helpers 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /jquery 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /jquery-migrate 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /jquery-ui 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /jquery-ui/ui 0 0 0
[D] Diff { upload: [], rm: [], rmDir: [] }
>> Got diff for /jquery-ui/ui/i18n 2 2 0
[D] Diff { upload:
[ [ 'jquery.ui.datepicker-en-NZ.js',
'af985e8d034123f14696aa116027760d' ],
[ 'jquery.ui.datepicker-pt.js',
'195beac164d3b2cfc5b8d02e98353834' ] ],
rm: [ 'jquery.ui.', '874 Aug 26 01:41 jquery.ui.datepicker-pt.js' ],
rmDir: [] }
[D] Upload 'jquery.ui.datepicker-en-NZ.js' '/jquery-ui/ui/i18n' 'af985e8d034123f14696aa116027760d'
[D] Upload 'jquery.ui.datepicker-pt.js' '/jquery-ui/ui/i18n' '195beac164d3b2cfc5b8d02e98353834'
[D] Delete 'jquery.ui.' '/jquery-ui/ui/i18n'
[D] Delete '874 Aug 26 01:41 jquery.ui.datepicker-pt.js' '/jquery-ui/ui/i18n'
>> Got diff for /jquery-ui/ui/minified 2 1 0
[D] Diff { upload:
[ [ 'jquery.ui.effect-fold.min.js',
'8074c41343e8123a8567de8af452fc72' ],
[ 'jquery.ui.tabs.min.js', '490d0168365536638cb63e97b69494b1' ] ],
rm: [ '18572 Aug 26 01:41 jquery.ui.tabs.min.js' ],
rmDir: [] }
[D] Upload 'jquery.ui.effect-fold.min.js' '/jquery-ui/ui/minified' '8074c41343e8123a8567de8af452fc72'
[D] Upload 'jquery.ui.tabs.min.js' '/jquery-ui/ui/minified' '490d0168365536638cb63e97b69494b1'
[D] Delete '18572 Aug 26 01:41 jquery.ui.tabs.min.js' '/jquery-ui/ui/minified'
>> Got diff for /jquery-ui/ui/minified/i18n 2 1 0
[D] Diff { upload:
[ [ 'jquery.ui.datepicker-en-NZ.min.js',
'b00b8ee629d0f9a434368318d44d53d6' ],
[ 'jquery.ui.datepicker-id.min.js',
'137bebad13d3b64779c7717eaa6a1c93' ] ],
rm: [ '01:41 jquery.ui.datepicker-id.min.js' ],
rmDir: [] }
[D] Upload 'jquery.ui.datepicker-en-NZ.min.js' '/jquery-ui/ui/minified/i18n' 'b00b8ee629d0f9a434368318d44d53d6'
[D] Upload 'jquery.ui.datepicker-id.min.js' '/jquery-ui/ui/minified/i18n' '137bebad13d3b64779c7717eaa6a1c93'
[D] Delete '01:41 jquery.ui.datepicker-id.min.js' '/jquery-ui/ui/minified/i18n'
Warning: Cannot delete file: jquery.ui. --> Error: 550 Delete operation failed. Use --force to continue.
It looks like some kind of filename parsing error, as it is trying to remove file "jquery.ui." which obviously doesn't exist. Weird think is that sometimes if fails on different file (while the file which failed previously is OK, according to the log).
I'm trying to push my files to my FTP using ftpush, but instead of updating files in subdirectories, its creating new folders with complete paths:
I'm running my environment on Windows, while my co-developer running on MacOS (using the same gruntfile and json files, doesn't seem to run into this issue.
Here's my config:
'sftp-deploy': {
buildsftp: {
auth: {
host: login.live.host,
port: 22,
authKey: 'live'
},
cache: '<%= path.devAssets %>/dev/grunt/ftpush/live.json',
src: '<%= path.root %>',
dest: '/var/www/html/wp-content/themes/cvhelpr/',
exclusions: [
'_production',
'.gitignore',
'.git',
'**/.DS_Store'
],
progress: true,
simple: true
}
},
I'm not receiving errors when pushing to FTP, so I have no idea how to approach this issue.
I've tried both using simple: false
and simple:true
, but it's the same result.
Could this be related to node/npm or ftpush version?
Hi there, i have used grunt-ftp-deploy and it works fine, but i like the idea of incremental only uploads that you have built into yours, but i cannot get it to work.
Below is a sample of the debug output:
[D] Diff { upload:
[ [ 'jquery-1.10.2.min.js', '11468602df014a21b203dc9bcd84d369' ],
[ 'modernizr-2.6.2.min.js', '4747d88a589eb8b864e546af80acb111' ] ],
rm: [],
rmDir: [] }
[D] Upload 'jquery-1.10.2.min.js' '\\assets\\js\\vendor' '11468602df014a21b203dc
9bcd84d369'
[D] Upload 'modernizr-2.6.2.min.js' '\\assets\\js\\vendor' '4747d88a589eb8b864e5
46af80acb111'
[D] Remote folder wasn't creted (isn't empty?) public_html\test\wp-content\theme
s\jayseventwo\assets\less --> Error: 553 Prohibited directory name
and at the end:
>> Uploaded file: .editorconfig to: \
Fatal error: read ECONNRESET
I have integrated this with the WordPress Roots starter theme (roots.io) that uses grunt.
Any ideas as to what is going wrong, especially since ftp-deploy works fine?
I don't want to store my credentials in file so I tried to run it without .ftppass
(like I used to in ftp-deploy) but im getting this exception (instead user/pass prompt):
Authentication error: Error: Login not accepted
First, thanks for your great work. It really saves my time.
When i use ftpush, some directories named after what i uploaded (directories, sub directories) are made on my ftp server root.
Like below, if the 'src' directory is uploaded, i see 'somewhere_pkgname_\src' directory on the server root.
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
ftpush: {
build: {
auth: {
host: 'ftp.com',
port: 21,
authKey: 'key'
},
src: 'src',
dest: 'somewhere/<%= pkg.name %>',
simple: true
}
}
});
grunt.loadNpmTasks('grunt-contrib-ftpush');
grunt.registerTask('default', ['ftpush:build']);
};
It only happens when the simple option is set true and <%= pkg.name %> is used for destination, but i should set simple option true because i've met this issue #26. Also, I use <%= pkg.name %> to avoid editing every single Gruntfile.js of my multiple, similar structured projects.
It's not that annoying to delete those directories, but hopefully there's a way around.
Hi, I have this problem.
When I launch the ftpush task this is the outout in console:
Got diff for / 6 0 0 Got diff for /bower_components 0 0 0 Got diff for /bower_components/requirejs 1 0 0 Got diff for /bower_components/sass-bootstrap 0 0 0 Got diff for /bower_components/sass-bootstrap/fonts 4 0 0 Got diff for /fonts 12 0 0 Got diff for /images 2 0 0 Got diff for /images/book 2 0 0 Got diff for /images/promotion 1 0 0 Got diff for /images/userpoints 2 0 0 Got diff for /scripts 1 0 0 Got diff for /scripts/vendor 1 0 0 Got diff for /styles 1 0 0 Got diff for /templates 2 0 0 Got diff for /uploads 0 0 0 Got diff for /uploads/book 5 0 0 Got diff for /uploads/labels 1 0 0 Got diff for /uploads/promotion 2 0 0 Got diff for /uploads/userpoints 2 0 0 Uploaded file: .htaccess to: /
why it doesn't upload all the files I've changed?
Thank you
Alberto
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.