restructured build.ts and added a helpcommand
This commit is contained in:
114
lib/build.js
114
lib/build.js
@@ -8,7 +8,8 @@ const fs_1 = require("fs");
|
||||
const paths_1 = require("./paths");
|
||||
const readmeta_1 = __importDefault(require("./readmeta"));
|
||||
const prettier_1 = require("prettier");
|
||||
function default_1(name, watchCallback, PrettierConfig, CLIArgs) {
|
||||
const main_1 = require("./main");
|
||||
function default_1(name, watchCallback) {
|
||||
//read meta file
|
||||
let [metaJson, metaString] = (0, readmeta_1.default)(name);
|
||||
let pathDist = (0, paths_1.DistPath)(name);
|
||||
@@ -19,7 +20,7 @@ function default_1(name, watchCallback, PrettierConfig, CLIArgs) {
|
||||
platform: 'node',
|
||||
format: 'esm',
|
||||
bundle: true,
|
||||
minify: CLIArgs.minify,
|
||||
minify: main_1.CLIArgs.minify,
|
||||
define: {
|
||||
UserScriptName: `'${metaJson.name}'`,
|
||||
UserScriptNamespace: `'${metaJson.namespace}'`,
|
||||
@@ -29,66 +30,44 @@ function default_1(name, watchCallback, PrettierConfig, CLIArgs) {
|
||||
UserScriptHomepageURL: `'${metaJson.homepageURL}'`,
|
||||
},
|
||||
}, result => {
|
||||
let error = runPostEsbuild(name, result, metaString, CLIArgs, PrettierConfig);
|
||||
let error = postBuild(name, result, metaString);
|
||||
watchCallback(metaJson, error);
|
||||
}, CLIArgs);
|
||||
let error = runPostEsbuild(name, result, metaString, CLIArgs, PrettierConfig);
|
||||
});
|
||||
let error = postBuild(name, result, metaString);
|
||||
return [metaJson, error];
|
||||
}
|
||||
exports.default = default_1;
|
||||
function doErrorFile(pathError, pathOutFile, error) {
|
||||
if (error !== null) {
|
||||
(0, fs_1.writeFileSync)(pathError, `${new Date().toISOString()}\n\n${error}`);
|
||||
if ((0, fs_1.existsSync)(pathOutFile)) {
|
||||
(0, fs_1.unlinkSync)(pathOutFile);
|
||||
}
|
||||
}
|
||||
else if ((0, fs_1.existsSync)(pathError)) {
|
||||
(0, fs_1.unlinkSync)(pathError);
|
||||
}
|
||||
}
|
||||
function runEsbuild(opts, watchCallback, CLIArgs) {
|
||||
function runEsbuild(opts, watchCallback) {
|
||||
opts.write = false;
|
||||
if (CLIArgs.watch) {
|
||||
if (main_1.CLIArgs.watch) {
|
||||
opts.watch = {
|
||||
onRebuild(err, res) {
|
||||
if (err) {
|
||||
watchCallback({
|
||||
content: null,
|
||||
error: err.message,
|
||||
errorRaw: err,
|
||||
});
|
||||
}
|
||||
else if (res) {
|
||||
let content = '';
|
||||
if (res.outputFiles && res.outputFiles.length > 0) {
|
||||
content = res.outputFiles[0].text;
|
||||
}
|
||||
if (content === '') {
|
||||
watchCallback({
|
||||
content: null,
|
||||
error: 'No output',
|
||||
});
|
||||
}
|
||||
watchCallback({
|
||||
content,
|
||||
error: null,
|
||||
});
|
||||
}
|
||||
else {
|
||||
watchCallback({
|
||||
content: null,
|
||||
error: 'No result',
|
||||
});
|
||||
}
|
||||
watchCallback(getResult(err, res));
|
||||
},
|
||||
};
|
||||
}
|
||||
try {
|
||||
let res = (0, esbuild_1.buildSync)(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 (res.outputFiles && res.outputFiles.length > 0) {
|
||||
content = clearFilenameComments(res.outputFiles[0].text);
|
||||
if (result.outputFiles && result.outputFiles.length > 0) {
|
||||
content = result.outputFiles[0].text;
|
||||
if (!main_1.CLIArgs.srccomment)
|
||||
content = clearFilenameComments(content);
|
||||
}
|
||||
if (content === '') {
|
||||
return {
|
||||
@@ -101,37 +80,54 @@ function runEsbuild(opts, watchCallback, CLIArgs) {
|
||||
error: null,
|
||||
};
|
||||
}
|
||||
catch (err) {
|
||||
else {
|
||||
return {
|
||||
content: null,
|
||||
error: err.message,
|
||||
error: 'No result',
|
||||
};
|
||||
}
|
||||
}
|
||||
function runPostEsbuild(name, result, metaString, CLIArgs, PrettierConfig) {
|
||||
function clearFilenameComments(content) {
|
||||
let regexp = new RegExp(`//\\s*${paths_1.ScriptBase}/.*(?:\\n|$)`, 'g');
|
||||
return content.replace(regexp, '');
|
||||
}
|
||||
function postBuild(name, result, metaString) {
|
||||
let error = null;
|
||||
let path = (0, paths_1.ScriptPath)(name);
|
||||
let pathDist = (0, paths_1.DistPath)(name);
|
||||
let PrettierConfig = prettier_1.resolveConfig.sync(path.dir) || {};
|
||||
if (result.error) {
|
||||
console.error(name, result.errorRaw || result.error);
|
||||
error = result.error;
|
||||
}
|
||||
else if (result.content) {
|
||||
let content = metaString + result.content;
|
||||
if (CLIArgs.prettier) {
|
||||
content = (0, prettier_1.format)(content, PrettierConfig);
|
||||
if (main_1.CLIArgs.prettier) {
|
||||
content = (0, prettier_1.format)(content, {
|
||||
...PrettierConfig,
|
||||
parser: 'babel',
|
||||
});
|
||||
}
|
||||
(0, fs_1.writeFileSync)(pathDist, content);
|
||||
}
|
||||
else {
|
||||
console.error(name, 'No output');
|
||||
}
|
||||
doErrorFile(path.error, pathDist, error);
|
||||
doErrorFile(name, error);
|
||||
return error;
|
||||
}
|
||||
//remove all filename comments
|
||||
function clearFilenameComments(content) {
|
||||
let regexp = new RegExp(`//\\s*${paths_1.ScriptBase}/.*(?:\\n|$)`, 'g');
|
||||
return content.replace(regexp, '');
|
||||
function doErrorFile(name, error) {
|
||||
let path = (0, paths_1.ScriptPath)(name);
|
||||
let outfile = (0, paths_1.DistPath)(name);
|
||||
let content = `${new Date().toISOString()}\n\n${error}`;
|
||||
if (error !== null) {
|
||||
(0, fs_1.writeFileSync)(path.error, content);
|
||||
if ((0, fs_1.existsSync)(outfile)) {
|
||||
(0, fs_1.unlinkSync)(outfile);
|
||||
}
|
||||
}
|
||||
else if ((0, fs_1.existsSync)(path.error)) {
|
||||
(0, fs_1.unlinkSync)(path.error);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=build.js.map
|
||||
Reference in New Issue
Block a user