UNPKG

package-preview

Version:

Creates a production preview of a package

60 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fx = require("fs-extra"); const loadJsonFile = require("load-json-file"); const fs = require("mz/fs"); const path = require("path"); const rimraf = require("rimraf-then"); const unpackStream = require("unpack-stream"); const npmPack_1 = require("./npmPack"); const npmRun_1 = require("./npmRun"); async function default_1(pkgDir, distDir, opts) { try { await clearDistDir(distDir); await fx.copy(path.join(pkgDir, 'pnpm-lock.yaml'), path.join(distDir, 'pnpm-lock.yaml')); } catch (err) { if (err.code !== 'ENOENT') throw err; } await runPrepublishScripts(pkgDir, opts); const tgzFilename = await npmPack_1.default(pkgDir); const tarball = path.resolve(pkgDir, tgzFilename); await fetchFromLocalTarball(tarball, distDir); await fs.unlink(tarball); } exports.default = default_1; async function fetchFromLocalTarball(tarball, dist) { await unpackStream.local(fs.createReadStream(tarball), dist, { generateIntegrity: false, }); } const filesToKeep = new Set(['node_modules', 'pnpm-lock.yaml']); async function clearDistDir(base) { const dirs = await fs.readdir(base); return Promise.all(dirs .filter((dir) => !filesToKeep.has(dir)) .map((dir) => path.join(base, dir)) .map(rimraf)); } const PREPUBLISH_SCRIPTS = [ 'prepublish', 'prepare', 'prepublishOnly', 'prepack', ]; async function runPrepublishScripts(pkgDir, opts) { const pkg = await loadJsonFile(path.join(pkgDir, 'package.json')); if (!pkg.scripts) return; const scripts = pkg.scripts; for (const script of PREPUBLISH_SCRIPTS) { if (scripts[script] && !opts[`skip${capitalize(script)}`]) { await npmRun_1.default(script, pkgDir, opts.env); } } } function capitalize(str) { return str[0].toUpperCase() + str.substr(1); } //# sourceMappingURL=publishToDir.js.map