PHP 8.2.30
Preview: tarball.js Size: 1.14 KB
//opt/alt/alt-nodejs22/root/usr/lib/node_modules/npm/node_modules/libnpmdiff/lib/tarball.js

const { relative } = require('node:path')

const Arborist = require('@npmcli/arborist')
const npa = require('npm-package-arg')
const pkgContents = require('@npmcli/installed-package-contents')
const pacote = require('pacote')
const { tarCreateOptions } = pacote.DirFetcher
const tar = require('tar')

// returns a simplified tarball when reading files from node_modules folder,
// thus avoiding running the prepare scripts and the extra logic from packlist
const nodeModulesTarball = (manifest) =>
  pkgContents({ path: manifest._resolved, depth: 1 })
    .then(files =>
      files.map(file => relative(manifest._resolved, file))
    )
    .then(files =>
      tar.c(tarCreateOptions(manifest), files).concat()
    )

const tarball = (manifest, opts) => {
  const resolved = manifest._resolved
  const where = opts.where || process.cwd()

  const fromNodeModules = npa(resolved).type === 'directory'
    && /node_modules[\\/](@[^\\/]+\/)?[^\\/]+[\\/]?$/.test(relative(where, resolved))

  if (fromNodeModules) {
    return nodeModulesTarball(manifest, opts)
  }

  return pacote.tarball(manifest._resolved, {
    ...opts,
    Arborist,
  })
}

module.exports = tarball

Directory Contents

Dirs: 0 × Files: 5

Name Size Perms Modified Actions
3.23 KB lrw-r--r-- 2026-02-23 06:54:01
Edit Download
1.23 KB lrw-r--r-- 2026-02-23 06:54:01
Edit Download
521 B lrw-r--r-- 2026-02-23 06:54:01
Edit Download
1.14 KB lrw-r--r-- 2026-02-23 06:54:01
Edit Download
2.33 KB lrw-r--r-- 2026-02-23 06:54:01
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).