62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
const fs = require("fs");
|
|
const path = require("path");
|
|
const archiver = require("archiver");
|
|
const webpack = require("webpack");
|
|
const webpack_config = require("../webpack.config");
|
|
|
|
function build() {
|
|
return new Promise((resolve, reject) => {
|
|
const compiler = webpack(webpack_config());
|
|
compiler.run((err) => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
function createManifest(overrides) {
|
|
const manifest = require("../manifest.json");
|
|
return { ...manifest, ...overrides };
|
|
}
|
|
|
|
async function zip(destination, manifest) {
|
|
const output = fs.createWriteStream(destination);
|
|
const archive = archiver("zip", {});
|
|
|
|
output.on("close", function () {
|
|
console.log(
|
|
`Extension is ${archive.pointer()} total bytes when packaged`
|
|
);
|
|
});
|
|
|
|
archive.on("error", function (err) {
|
|
throw err;
|
|
});
|
|
|
|
archive.on("warning", function (err) {
|
|
if (err.code === "ENOENT") {
|
|
console.warn(`Warning whilst zipping extension: ${err}`);
|
|
} else {
|
|
throw err;
|
|
}
|
|
});
|
|
|
|
archive.pipe(output);
|
|
|
|
archive.directory(path.resolve(__dirname, `../build`), "");
|
|
archive.append(Buffer.from(JSON.stringify(manifest)), {
|
|
name: "manifest.json",
|
|
});
|
|
|
|
await archive.finalize();
|
|
}
|
|
|
|
module.exports = {
|
|
build,
|
|
zip,
|
|
createManifest,
|
|
};
|