Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 1x 1x 1x 5x 5x 5x 5x 3x 3x 3x 3x 3x 3x 3x 3x 3x 5x 20x 5x 5x 20x | #! /usr/bin/env node
const fs = require(`fs`);
const path = require(`path`);
const shell = require(`shelljs`);
const { spawn } = require("child_process");
const { safetyDecorator } = require(path.join(__dirname, `./utils/utils.index`));
const cp = safetyDecorator(shell.cp);
const mv = safetyDecorator(shell.mv);
const FILES_TO_BACKUP = [`package.json`, `package-lock.json`, `yarn.lock`, `.npmignore`];
const TMP_DIRECTORY = path.join(process.cwd(), `.npm-pack-all-tmp`);
console.info(`
.------..------..------..------..------..------..------..------..------..------..------..------.
|N.--. ||P.--. ||M.--. ||-.--. ||P.--. ||A.--. ||C.--. ||K.--. ||-.--. ||A.--. ||L.--. ||L.--. |
| :(): || :/\\: || (\\/) || (\\/) || :/\\: || (\\/) || :/\\: || :/\\: || (\\/) || (\\/) || :/\\: || :/\\: |
| ()() || (__) || :\\/: || :\\/: || (__) || :\\/: || :\\/: || :\\/: || :\\/: || :\\/: || (__) || (__) |
| '--'N|| '--'P|| '--'M|| '--'-|| '--'P|| '--'A|| '--'C|| '--'K|| '--'-|| '--'A|| '--'L|| '--'L|
\`------'\`------'\`------'\`------'\`------'\`------'\`------'\`------'\`------'\`------'\`------'\`------'\n`);
// parse cli args
const cliArgs = require(`minimist`)(process.argv.slice(2));
console.info(`CLI Args: ${JSON.stringify(cliArgs, null, 4)}\n`);
const packageJson = require(path.join(process.cwd(), `package.json`));
shell.config.fatal = true; // error out if a shell command errors out
shell.config.silent = true;
// create temp directory
createTempDirectory(TMP_DIRECTORY);
// copy existing package.json and lock files (keep linting, etc in tact)
console.info(`Saving existing package.json and lock files`);
copyFiles(process.cwd(), TMP_DIRECTORY, FILES_TO_BACKUP);
setBundledDependencies(packageJson);
// pack with npm
console.info(`\nPacking source code${!cliArgs[`dev-deps`] ? `` : `, development`} and production dependencies...`);
const packProcess = spawn("npm pack", {
shell: true,
stdio: [null, "inherit", "inherit"]
});
packProcess.on("close", () => {
// restoring package.json and lock files back to project root
console.info(`Restoring original package.json and lock files`);
moveFiles(TMP_DIRECTORY, process.cwd(), FILES_TO_BACKUP);
shell.rm(`-Rf`, TMP_DIRECTORY);
setArtifactName(cliArgs);
});
function createTempDirectory(dir) {
shell.rm(`-Rf`, dir);
shell.mkdir("-p", dir);
}
function setBundledDependencies(pj) {
// prune - get rid of devDependencies
pj.bundledDependencies = Object.keys(pj.dependencies || {});
if (cliArgs[`dev-deps`]) {
console.info(`Detected --dev-deps\n\nInstalling all modules...`);
console.warn(`To save time and space, you may want to think about only packaging production dependencies`);
pj.bundledDependencies = pj.bundledDependencies.concat(Object.keys(pj.devDependencies));
}
// put dependencies into bundledDependencies in package.json
console.info(`Adding dependencies${cliArgs["dev-deps"] ? " and devDependencies" : ""} to bundledDependencies:`);
console.info(JSON.stringify(pj.bundledDependencies, null, 4));
fs.writeFileSync(path.join(process.cwd(), `package.json`), JSON.stringify(pj, null, 4));
}
function setArtifactName(args) {
if (args.output) {
const packageParse = path.posix.parse(packageJson.name);
const scopedPrefix = packageParse.dir ? `${packageParse.dir}-`.replace("@", "") : "";
const packageName = `${scopedPrefix}${packageParse.name}-${packageJson.version}.tgz`;
const outputDir = path.parse(path.join(process.cwd(), cliArgs.output)).dir;
Eif (outputDir && !fs.existsSync(outputDir)) {
console.info(`Creating directory ${outputDir}`);
shell.mkdir(`-p`, outputDir);
}
console.info(`Moving ${path.join(process.cwd(), packageName)} to ${path.join(process.cwd(), cliArgs.output)}`);
shell.mv(`-f`, path.join(process.cwd(), packageName), path.join(process.cwd(), cliArgs.output));
}
}
function copyFiles(from, to, files) {
files.forEach(file => {
cp(`-Rf`, path.join(from, file), path.join(to, file));
});
fs.writeFileSync(".npmignore", ".npm-pack-all-tmp");
}
function moveFiles(from, to, files) {
files.forEach(file => {
mv(`-f`, path.join(from, file), path.join(to, file));
});
}
|