diff options
Diffstat (limited to 'deps/npm/node_modules/pacote/lib/util/pack-dir.js')
-rw-r--r-- | deps/npm/node_modules/pacote/lib/util/pack-dir.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/npm/node_modules/pacote/lib/util/pack-dir.js b/deps/npm/node_modules/pacote/lib/util/pack-dir.js new file mode 100644 index 0000000000..54a94e5862 --- /dev/null +++ b/deps/npm/node_modules/pacote/lib/util/pack-dir.js @@ -0,0 +1,43 @@ +'use strict' + +const BB = require('bluebird') + +const cacache = require('cacache') +const cacheKey = require('./cache-key') +const optCheck = require('./opt-check') +const pipe = BB.promisify(require('mississippi').pipe) +const tar = require('tar-fs') + +module.exports = packDir +function packDir (manifest, label, dir, target, opts) { + opts = optCheck(opts) + + const packer = opts.dirPacker + ? opts.dirPacker(manifest, dir) + : tar.pack(dir, { + map: header => { + header.name = 'package/' + header.name + header.mtime = 0 // make tarballs idempotent + return header + }, + ignore: (name) => { + return name.match(/\.git/) + } + }) + + if (!opts.cache) { + return pipe(packer, target).catch(err => { + throw err + }) + } else { + const cacher = cacache.put.stream( + opts.cache, cacheKey('packed-dir', label), opts + ).on('integrity', i => { + target.emit('integrity', i) + }) + return BB.all([ + pipe(packer, cacher), + pipe(packer, target) + ]) + } +} |