32 lines
914 B
JavaScript
32 lines
914 B
JavaScript
|
const isPackageBin = require('./is-package-bin.js')
|
||
|
|
||
|
const tarCreateOptions = manifest => ({
|
||
|
cwd: manifest._resolved,
|
||
|
prefix: 'package/',
|
||
|
portable: true,
|
||
|
gzip: {
|
||
|
// forcing the level to 9 seems to avoid some
|
||
|
// platform specific optimizations that cause
|
||
|
// integrity mismatch errors due to differing
|
||
|
// end results after compression
|
||
|
level: 9,
|
||
|
},
|
||
|
|
||
|
// ensure that package bins are always executable
|
||
|
// Note that npm-packlist is already filtering out
|
||
|
// anything that is not a regular file, ignored by
|
||
|
// .npmignore or package.json "files", etc.
|
||
|
filter: (path, stat) => {
|
||
|
if (isPackageBin(manifest, path)) {
|
||
|
stat.mode |= 0o111
|
||
|
}
|
||
|
return true
|
||
|
},
|
||
|
|
||
|
// Provide a specific date in the 1980s for the benefit of zip,
|
||
|
// which is confounded by files dated at the Unix epoch 0.
|
||
|
mtime: new Date('1985-10-26T08:15:00.000Z'),
|
||
|
})
|
||
|
|
||
|
module.exports = tarCreateOptions
|