-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.js
More file actions
63 lines (48 loc) · 1.48 KB
/
Copy pathindex.js
File metadata and controls
63 lines (48 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
'use strict';
var path = require('path');
var util = require('gulp-util');
var log = util.log;
var colors = util.colors;
var PluginError = util.PluginError;
var map = require('map-stream');
var QN = require('qn');
var assign = require('object-assign');
var slash = require('slash');
var getEtag = require('./lib/qnetag');
var PLUGIN_NAME = 'gulp-qndn';
var DEFAULTS = {
flatten: false, // flatten path
prefix: ''
};
exports.upload = function(options) {
options = assign({}, DEFAULTS, options);
var client = QN.create(options.qn);
if (!options.qn) {
throw new PluginError(PLUGIN_NAME, 'Missing Qiniu dn configs!');
}
// TODO: 根据文件 hash 判断文件是否改变,只上传改变的文件
// http://kb.qiniu.com/53tubk96
// https://github.com/demohi/gulp-qn/blob/master/lib/qn.js#L40
// http://artandlogic.com/2014/05/a-simple-gulp-plugin/
return map(function(file, callback) {
if (file.isNull()) {
callback(null, file);
return;
}
var fileKey = path.join(options.prefix, options.flatten ?
path.basename(file.path) : file.relative);
// Both stream and buffer are supported
client.upload(file.contents, {key: slash(fileKey)}, function(err, result) {
if (err) {
log('Error', colors.red(new PluginError(PLUGIN_NAME, err).message));
} else {
log('Uploaded:', colors.green(result.url));
}
});
callback(null, file);
});
};
/*exports.delete = function() {
};
exports.download = function() {
}*/