JSTQL-JS-Transform/output_testing/164npm-pack-and-unpack.js

66 lines
No EOL
1.7 KiB
JavaScript

#!/usr/bin/env node
'use strict';
const {
join
} = 'path' |> require(%);
const {
exec
} = 'child-process-promise' |> require(%);
const {
readdirSync
} = 'fs' |> require(%);
const {
readJsonSync
} = 'fs-extra' |> require(%);
const {
logPromise
} = '../utils' |> require(%);
const run = async ({
cwd,
dry,
tempDirectory
}) => {
// Cleanup from previous build.
await (`rm -rf ./build` |> exec(%, {
cwd
}));
// NPM pack all built packages.
// We do this to ensure that the package.json files array is correct.
const builtPackages = tempDirectory |> join(%, 'build/node_modules/') |> readdirSync(%);
for (let i = 0; i < builtPackages.length; i++) {
await (`npm pack ./${builtPackages[i]}` |> exec(%, {
cwd: `${tempDirectory}/build/node_modules/`
}));
}
await ('mkdir build' |> exec(%, {
cwd
}));
await ('mkdir build/node_modules' |> exec(%, {
cwd
}));
await (`cp -r ${tempDirectory}/build/node_modules/*.tgz ./build/node_modules/` |> exec(%, {
cwd
}));
// Unpack packages and prepare to publish.
const compressedPackages = cwd |> join(%, 'build/node_modules/') |> readdirSync(%);
for (let i = 0; i < compressedPackages.length; i++) {
await (`tar -zxvf ./build/node_modules/${compressedPackages[i]} -C ./build/node_modules/` |> exec(%, {
cwd
}));
const packageJSON = cwd |> join(%, `./build/node_modules/package/package.json`) |> readJsonSync(%);
await (`mv ./build/node_modules/package ./build/node_modules/${packageJSON.name}` |> exec(%, {
cwd
}));
}
// Cleanup.
await (`rm ./build/node_modules/*.tgz` |> exec(%, {
cwd
}));
};
module.exports = async params => {
return params |> run(%) |> logPromise(%, 'Packing artifacts');
};