package-preview
Version:
Creates a production preview of a package
60 lines • 2 kB
JavaScript
;
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