__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
'use strict'
// npm pack <pkg>
// Packs the specified package into a .tgz file, which can then
// be installed.
const BB = require('bluebird')
const cacache = require('cacache')
const cp = require('child_process')
const deprCheck = require('./utils/depr-check')
const fpm = require('./fetch-package-metadata')
const fs = require('graceful-fs')
const install = require('./install')
const lifecycle = BB.promisify(require('./utils/lifecycle'))
const log = require('npmlog')
const move = require('move-concurrently')
const npm = require('./npm')
const output = require('./utils/output')
const pacote = require('pacote')
const pacoteOpts = require('./config/pacote')
const path = require('path')
const PassThrough = require('stream').PassThrough
const pathIsInside = require('path-is-inside')
const pipe = BB.promisify(require('mississippi').pipe)
const prepublishWarning = require('./utils/warn-deprecated')('prepublish-on-install')
const pinflight = require('promise-inflight')
const readJson = BB.promisify(require('read-package-json'))
const tar = require('tar')
const packlist = require('npm-packlist')
pack.usage = 'npm pack [[<@scope>/]<pkg>...]'
// if it can be installed, it can be packed.
pack.completion = install.completion
module.exports = pack
function pack (args, silent, cb) {
const cwd = process.cwd()
if (typeof cb !== 'function') {
cb = silent
silent = false
}
if (args.length === 0) args = ['.']
BB.all(
args.map((arg) => pack_(arg, cwd))
).then((files) => {
if (!silent) {
output(files.map((f) => path.relative(cwd, f)).join('\n'))
}
cb(null, files)
}, cb)
}
// add to cache, then cp to the cwd
function pack_ (pkg, dir) {
return BB.fromNode((cb) => fpm(pkg, dir, cb)).then((mani) => {
let name = mani.name[0] === '@'
// scoped packages get special treatment
? mani.name.substr(1).replace(/\//g, '-')
: mani.name
const target = `${name}-${mani.version}.tgz`
return pinflight(target, () => {
if (mani._requested.type === 'directory') {
return prepareDirectory(mani._resolved).then(() => {
return packDirectory(mani, mani._resolved, target)
})
} else {
return pacote.tarball.toFile(pkg, target, pacoteOpts())
.then(() => target)
}
})
})
}
module.exports.prepareDirectory = prepareDirectory
function prepareDirectory (dir) {
return readJson(path.join(dir, 'package.json')).then((pkg) => {
if (!pkg.name) {
throw new Error('package.json requires a "name" field')
}
if (!pkg.version) {
throw new Error('package.json requires a valid "version" field')
}
if (!pathIsInside(dir, npm.tmp)) {
if (pkg.scripts && pkg.scripts.prepublish) {
prepublishWarning([
'As of npm@5, `prepublish` scripts are deprecated.',
'Use `prepare` for build steps and `prepublishOnly` for upload-only.',
'See the deprecation note in `npm help scripts` for more information.'
])
}
if (npm.config.get('ignore-prepublish')) {
return lifecycle(pkg, 'prepare', dir).then(() => pkg)
} else {
return lifecycle(pkg, 'prepublish', dir).then(() => {
return lifecycle(pkg, 'prepare', dir)
}).then(() => pkg)
}
}
return pkg
})
}
module.exports.packDirectory = packDirectory
function packDirectory (mani, dir, target) {
deprCheck(mani)
return readJson(path.join(dir, 'package.json')).then((pkg) => {
return lifecycle(pkg, 'prepack', dir)
}).then(() => {
return readJson(path.join(dir, 'package.json'))
}).then((pkg) => {
return cacache.tmp.withTmp(npm.tmp, {tmpPrefix: 'packing'}, (tmp) => {
const tmpTarget = path.join(tmp, path.basename(target))
const tarOpt = {
file: tmpTarget,
cwd: dir,
prefix: 'package/',
portable: true,
noMtime: true,
gzip: true
}
return packlist({ path: dir })
// NOTE: node-tar does some Magic Stuff depending on prefixes for files
// specifically with @ signs, so we just neutralize that one
// and any such future "features" by prepending `./`
.then((files) => tar.create(tarOpt, files.map((f) => `./${f}`)))
.then(() => move(tmpTarget, target, {Promise: BB, fs}))
.then(() => lifecycle(pkg, 'postpack', dir))
.then(() => target)
})
})
}
const PASSTHROUGH_OPTS = [
'always-auth',
'auth-type',
'ca',
'cafile',
'cert',
'git',
'local-address',
'maxsockets',
'offline',
'prefer-offline',
'prefer-online',
'proxy',
'https-proxy',
'registry',
'send-metrics',
'sso-poll-frequency',
'sso-type',
'strict-ssl'
]
module.exports.packGitDep = packGitDep
function packGitDep (manifest, dir) {
const stream = new PassThrough()
readJson(path.join(dir, 'package.json')).then((pkg) => {
if (pkg.scripts && pkg.scripts.prepare) {
log.verbose('prepareGitDep', `${manifest._spec}: installing devDeps and running prepare script.`)
const cliArgs = PASSTHROUGH_OPTS.reduce((acc, opt) => {
if (npm.config.get(opt, 'cli') != null) {
acc.push(`--${opt}=${npm.config.get(opt)}`)
}
return acc
}, [])
const child = cp.spawn(process.env.NODE || process.execPath, [
require.main.filename,
'install',
'--dev',
'--prod',
'--ignore-prepublish',
'--no-progress',
'--no-save'
].concat(cliArgs), {
cwd: dir,
env: process.env
})
let errData = []
let errDataLen = 0
let outData = []
let outDataLen = 0
child.stdout.on('data', (data) => {
outData.push(data)
outDataLen += data.length
log.gauge.pulse('preparing git package')
})
child.stderr.on('data', (data) => {
errData.push(data)
errDataLen += data.length
log.gauge.pulse('preparing git package')
})
return BB.fromNode((cb) => {
child.on('error', cb)
child.on('exit', (code, signal) => {
if (code > 0) {
const err = new Error(`${signal}: npm exited with code ${code} while attempting to build ${manifest._requested}. Clone the repository manually and run 'npm install' in it for more information.`)
err.code = code
err.signal = signal
cb(err)
} else {
cb()
}
})
}).then(() => {
if (outDataLen > 0) log.silly('prepareGitDep', '1>', Buffer.concat(outData, outDataLen).toString())
if (errDataLen > 0) log.silly('prepareGitDep', '2>', Buffer.concat(errData, errDataLen).toString())
}, (err) => {
if (outDataLen > 0) log.error('prepareGitDep', '1>', Buffer.concat(outData, outDataLen).toString())
if (errDataLen > 0) log.error('prepareGitDep', '2>', Buffer.concat(errData, errDataLen).toString())
throw err
})
}
}).then(() => {
return readJson(path.join(dir, 'package.json'))
}).then((pkg) => {
return cacache.tmp.withTmp(npm.tmp, {
tmpPrefix: 'pacote-packing'
}, (tmp) => {
const tmpTar = path.join(tmp, 'package.tgz')
return packDirectory(manifest, dir, tmpTar).then(() => {
return pipe(fs.createReadStream(tmpTar), stream)
})
})
}).catch((err) => stream.emit('error', err))
return stream
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| auth | Folder | 0755 |
|
|
| config | Folder | 0755 |
|
|
| doctor | Folder | 0755 |
|
|
| install | Folder | 0755 |
|
|
| search | Folder | 0755 |
|
|
| utils | Folder | 0755 |
|
|
| access.js | File | 3.23 KB | 0644 |
|
| adduser.js | File | 1.28 KB | 0644 |
|
| bin.js | File | 515 B | 0644 |
|
| bugs.js | File | 879 B | 0644 |
|
| build.js | File | 4.45 KB | 0644 |
|
| cache.js | File | 4.43 KB | 0644 |
|
| completion.js | File | 7.06 KB | 0644 |
|
| config.js | File | 7.22 KB | 0644 |
|
| dedupe.js | File | 4.83 KB | 0644 |
|
| deprecate.js | File | 1.41 KB | 0644 |
|
| dist-tag.js | File | 3.67 KB | 0644 |
|
| docs.js | File | 1.05 KB | 0644 |
|
| doctor.js | File | 3.97 KB | 0644 |
|
| edit.js | File | 985 B | 0644 |
|
| explore.js | File | 1.63 KB | 0644 |
|
| fetch-package-metadata.js | File | 3.8 KB | 0644 |
|
| fetch-package-metadata.md | File | 1.77 KB | 0644 |
|
| get.js | File | 235 B | 0644 |
|
| help-search.js | File | 5.65 KB | 0644 |
|
| help.js | File | 6.32 KB | 0644 |
|
| init.js | File | 1.26 KB | 0644 |
|
| install-test.js | File | 507 B | 0644 |
|
| install.js | File | 32.16 KB | 0644 |
|
| link.js | File | 5.56 KB | 0644 |
|
| logout.js | File | 1.1 KB | 0644 |
|
| ls.js | File | 15.83 KB | 0644 |
|
| npm.js | File | 13.3 KB | 0644 |
|
| outdated.js | File | 12.15 KB | 0644 |
|
| owner.js | File | 7.55 KB | 0644 |
|
| pack.js | File | 7.21 KB | 0644 |
|
| ping.js | File | 688 B | 0644 |
|
| prefix.js | File | 330 B | 0644 |
|
| profile.js | File | 10.61 KB | 0644 |
|
| prune.js | File | 2.14 KB | 0644 |
|
| publish.js | File | 6.1 KB | 0644 |
|
| rebuild.js | File | 2.09 KB | 0644 |
|
| repo.js | File | 1.45 KB | 0644 |
|
| restart.js | File | 64 B | 0644 |
|
| root.js | File | 316 B | 0644 |
|
| run-script.js | File | 5.18 KB | 0644 |
|
| search.js | File | 3.15 KB | 0644 |
|
| set.js | File | 276 B | 0644 |
|
| shrinkwrap.js | File | 7.76 KB | 0644 |
|
| star.js | File | 1.17 KB | 0644 |
|
| stars.js | File | 1.1 KB | 0644 |
|
| start.js | File | 62 B | 0644 |
|
| stop.js | File | 61 B | 0644 |
|
| substack.js | File | 509 B | 0644 |
|
| team.js | File | 1.41 KB | 0644 |
|
| test.js | File | 324 B | 0644 |
|
| token.js | File | 6.2 KB | 0644 |
|
| unbuild.js | File | 4.11 KB | 0644 |
|
| uninstall.js | File | 2.22 KB | 0644 |
|
| unpublish.js | File | 3.55 KB | 0644 |
|
| update.js | File | 2.18 KB | 0644 |
|
| version.js | File | 9.1 KB | 0644 |
|
| view.js | File | 9.26 KB | 0644 |
|
| visnup.js | File | 4.01 KB | 0644 |
|
| whoami.js | File | 1.42 KB | 0644 |
|
| xmas.js | File | 1.57 KB | 0644 |
|