66 lines
1.7 KiB
JavaScript
66 lines
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');
|
||
|
};
|