UNPKG

package-preview

Version:

Creates a production preview of a package

59 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const exec_1 = require("@pnpm/exec"); const path = require("path"); const writeJsonFile = require("write-json-file"); const getPreviewDir_1 = require("./getPreviewDir"); const publishToDir_1 = require("./publishToDir"); const DEFAULT_OPTIONS = { skipPrepack: false, skipPrepare: false, skipPrepublish: false, skipPrepublishOnly: false, }; async function default_1(what, where, maybeOpts) { const opts = { ...DEFAULT_OPTIONS, ...maybeOpts }; const pkgDir = path.resolve(what); where = path.resolve(where); if (alreadyRunsFor(pkgDir)) { throw new Error('package-preview cannot be executed inside another package-preview. ' + 'You might have a loop somewhere. Try running package-preview with --skip-prepublish or --skip-prepublishOnly flag'); } const subenv = Object.create(process.env); subenv.PREVIEW_IS_RUNNING = process.env.PREVIEW_IS_RUNNING ? process.env.PREVIEW_IS_RUNNING + path.delimiter + pkgDir : pkgDir; const previewDir = await getPreviewDir_1.default(where, path.basename(pkgDir)); const pkg = require(path.join(pkgDir, 'package.json')); const distDir = path.join(previewDir, pkg.name); await publishToDir_1.default(pkgDir, distDir, { ...opts, env: subenv }); const wrapperPkg = { dependencies: pkg.peerDependencies || {}, }; // Would be better to install the package dirrectly from the tarball // in that case this hack would not be needed if (pkg.scripts) { delete pkg.scripts.prepare; delete pkg.scripts.prepublish; } await writeJsonFile(path.join(distDir, 'package.json'), pkg); await writeJsonFile(path.join(previewDir, 'package.json'), wrapperPkg); // This is where the peer dependencies are installed await exec_1.default(['install', '--production'], { cwd: previewDir, env: subenv, }); // Dependencies in the preview folder are installed during linking await exec_1.default(['link', '--production', path.relative(where, distDir)], { cwd: where, env: subenv, }); } exports.default = default_1; function alreadyRunsFor(pkgDir) { const pkgs = typeof process.env.PREVIEW_IS_RUNNING === 'string' ? process.env.PREVIEW_IS_RUNNING.split(path.delimiter) : []; return pkgs.indexOf(pkgDir) !== -1; } //# sourceMappingURL=index.js.map