gulp-webdav-sync
Put files and folders to a WebDAV server. Deploy with gulp.
Usage
Nominally, pass a URL string.
var webdav = require( 'gulp-webdav-sync' )
gulp.task( 'deploy', function () {
return gulp.src( 'index.js' )
.pipe( webdav( 'http://localhost:8000/js/' ) )
} )
Extend a URL object.
var webdav = require( 'gulp-webdav-sync' )
gulp.task( 'deploy', function () {
var options = {
protocol: 'http:'
, auth: 'user:pass'
, hostname: 'localhost'
, port: 8000
, pathname: '/js/'
, log: 'info'
, logAuth: true
}
return gulp.src( 'index.js' )
.pipe( webdav( options ) )
} )
Suppose the following directory tree,
and this target .
Use the 'parent'
option to constrain the localpath mapping.
var webdav = require( 'gulp-webdav-sync' )
gulp.task( 'deploy', function () {
var options = {
'log': 'info'
, 'parent': 'dist'
, 'port': 8000
}
return gulp.src( 'dist/**' )
.pipe( webdav( options ) )
} )
Otherwise, the result is this.
browser-sync, npmconf, and .npmrc for a save-sync-reload solution.
npm set dav http://user:pass@localhost:8000/js/
var browserSync = require( 'browser-sync' ).create()
var webdav = require( 'gulp-webdav-sync' )
var npmconf = require( 'npmconf' )
var href
var options = {
'log': 'info'
}
gulp.task( 'default', [ 'deploy' ], function () {
browserSync.init( { proxy: href } )
gulp.watch( [ '*.js', '!gulpfile.js' ], [ 'deploy' ] )
.on( 'change', webdav( href, options ).watch )
.on( 'change', browserSync.reload )
} )
gulp.task( 'deploy', [ 'load-npmrc' ], function () {
return gulp.src( [ '*.js', '!gulpfile.js' ] )
.pipe( webdav( href, options ) )
} )
gulp.task( 'load-npmrc', function ( cb ) {
npmconf.load( null, function() {
if ( npmconf.loaded.sources.user ) {
href = npmconf.loaded.sources.user.data.dav
}
cb()
} )
} )
With gulp-watch, gulp deploy
re-emits created, modified, and deleted files for upload.
var watch = require( 'gulp-watch' )
var webdav = require( 'gulp-webdav-sync' )
var href = 'http://localhost'
var paths = {
js: [ '*.js', '!gulpfile.js' ]
}
gulp.task( 'deploy', function () {
return gulp.src( paths.js )
.pipe( watch( paths.js ) )
.pipe( webdav( href ) )
} )
API
webdav( [ href ] [, options ] )
Target is a URL-type parameter whereto files are uploaded. It must specify a directory ( also known as a "collection" ). At a minimum this must be DAV root, but subdirectories may be included ( e.g. project name ). Part-wise definition across multiple arguments is undefined. Use the http:
scheme, not dav:
.
webdav( [ href ] [, options ] ).watch( event [, cb ] )
Callback adapter for change
events from gulp.watch()
. Only handles type: 'deleted'
events. gulp.src()
does not push deleted files; use this or gulp-watch instead. Calls back regardless of type:
.
event
glob-watcher event.
{
type: 'deleted'
, path: '/absolute/path.ext'
}
Type: Object
Default: undefined
cb
Optional asynchronous callback method.
Type: Function
Default: undefined
href
Type: string
Default: undefined
options
Superset of http.request options parameter, and url.object. If any URL properties are defined, protocol
, hostname
, and pathname
default to http://localhost/
.
Type: Object
.
Default: {}
options.log
Logging threshold. Orthogonal to the console
methods.
string | output |
---|
'error' | |
'warn' | |
'info' | HTTP Responses |
'log' | Debug |
Type: String
Default: 'error'
options.logAuth
Display credentials in logged URLs.
Type: Boolean
Default: false
options.parent
Relative or absolute path which halves the source path [vinyl.path
] for appending the subsequent to the DAV target URI. Use with glob **
to prevent super-directories from being created on the target. e.g. gulp.src( 'dist/**' )
.
Type: String
Default: process.cwd()
Development
cd gulp-webdav-sync
npm install
npm test
npm set dav http://user:pass@localhost:8000/
gulp