140 lines
4.0 KiB
JavaScript
140 lines
4.0 KiB
JavaScript
#!/usr/bin/env node
|
|
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const esbuild_1 = require("esbuild");
|
|
const fs_1 = require("fs");
|
|
const readmeta_1 = __importDefault(require("./readmeta"));
|
|
const prettier_1 = require("prettier");
|
|
const main_1 = require("./main");
|
|
async function runBuild(name, watchCallback) {
|
|
//read meta file
|
|
let { meta, metaString } = (0, readmeta_1.default)(name);
|
|
let paths = main_1.AllPaths.script(name);
|
|
let result = await runEsbuild({
|
|
entryPoints: [paths.main],
|
|
outfile: paths.dist,
|
|
target: 'esnext',
|
|
platform: 'node',
|
|
format: 'esm',
|
|
bundle: true,
|
|
minify: main_1.CLIArgs.minify,
|
|
define: {
|
|
UserScriptName: `'${meta.name}'`,
|
|
UserScriptNamespace: `'${meta.namespace}'`,
|
|
UserScriptVersion: `'${meta.version}'`,
|
|
UserScriptDownloadURL: `'${meta.downloadURL}'`,
|
|
UserScriptSupportURL: `'${meta.supportURL}'`,
|
|
UserScriptHomepageURL: `'${meta.homepageURL}'`,
|
|
},
|
|
}, result => {
|
|
let error = postBuild(name, result, metaString);
|
|
watchCallback({
|
|
meta,
|
|
error,
|
|
});
|
|
});
|
|
let error = postBuild(name, result, metaString);
|
|
return {
|
|
meta,
|
|
error,
|
|
};
|
|
}
|
|
exports.default = runBuild;
|
|
async function runEsbuild(opts, watchCallback) {
|
|
opts.write = false;
|
|
if (main_1.CLIArgs.watch) {
|
|
opts.watch = {
|
|
onRebuild(err, res) {
|
|
watchCallback(getResult(err, res));
|
|
},
|
|
};
|
|
}
|
|
try {
|
|
let res = await (0, esbuild_1.build)(opts);
|
|
return getResult(null, res);
|
|
}
|
|
catch (err) {
|
|
return getResult(err, null);
|
|
}
|
|
}
|
|
function getResult(error, result) {
|
|
if (error) {
|
|
return {
|
|
content: null,
|
|
error: error.message,
|
|
errorRaw: error,
|
|
};
|
|
}
|
|
else if (result) {
|
|
let content = '';
|
|
if (result.outputFiles && result.outputFiles.length > 0) {
|
|
content = result.outputFiles[0].text;
|
|
if (!main_1.CLIArgs.srccomment)
|
|
content = clearFilenameComments(content);
|
|
}
|
|
if (content === '') {
|
|
return {
|
|
content: null,
|
|
error: 'No output',
|
|
};
|
|
}
|
|
return {
|
|
content,
|
|
error: null,
|
|
};
|
|
}
|
|
else {
|
|
return {
|
|
content: null,
|
|
error: 'No result',
|
|
};
|
|
}
|
|
}
|
|
function clearFilenameComments(content) {
|
|
let regexp = new RegExp(`//\s*${main_1.AllPaths.base.in}/.*(?:\n|$)`, 'g');
|
|
return content.replace(regexp, '');
|
|
}
|
|
function postBuild(name, result, metaString) {
|
|
let error = null;
|
|
let paths = main_1.AllPaths.script(name);
|
|
let PrettierConfig = prettier_1.resolveConfig.sync(paths.dir) || {};
|
|
if (result.error) {
|
|
console.error(name, result.errorRaw || result.error);
|
|
error = result.error;
|
|
}
|
|
else if (result.content) {
|
|
let content = metaString + result.content;
|
|
if (main_1.CLIArgs.prettier) {
|
|
content = (0, prettier_1.format)(content, {
|
|
...PrettierConfig,
|
|
parser: 'babel',
|
|
});
|
|
}
|
|
(0, fs_1.writeFileSync)(paths.dist, content);
|
|
}
|
|
else {
|
|
console.error(name, 'No output');
|
|
}
|
|
doErrorFile(name, error);
|
|
return error;
|
|
}
|
|
function doErrorFile(name, error) {
|
|
let paths = main_1.AllPaths.script(name);
|
|
let content = `${new Date().toISOString()}
|
|
|
|
${error}`;
|
|
if (error !== null) {
|
|
(0, fs_1.writeFileSync)(paths.error, content);
|
|
if ((0, fs_1.existsSync)(paths.dist)) {
|
|
(0, fs_1.unlinkSync)(paths.dist);
|
|
}
|
|
}
|
|
else if ((0, fs_1.existsSync)(paths.error)) {
|
|
(0, fs_1.unlinkSync)(paths.error);
|
|
}
|
|
}
|
|
//# sourceMappingURL=build.js.map
|