aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/pacote/lib/util/pack-dir.js
diff options
context:
space:
mode:
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.js43
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)
+ ])
+ }
+}