Skip to content

Commit 563d2a4

Browse files
committed
feat: Add minify and pretty scripts, and update test files to use minified versions
1 parent 29540f2 commit 563d2a4

File tree

18 files changed

+337
-174
lines changed

18 files changed

+337
-174
lines changed

build/minify.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { fileURLToPath } from "url";
2+
import { dirname } from "path";
3+
import { minify } from "terser";
4+
import fs from "fs-plus"; // Import the promises API
5+
6+
7+
const __filename = fileURLToPath(import.meta.url);
8+
const __dirname = dirname(__filename);
9+
const project = dirname(__dirname);
10+
const files = [
11+
project + "/dist/Test.js",
12+
project + "/dist/Test.mjs",
13+
project + "/dist/Test.cjs",
14+
project + "/dist/amd/Test.js",
15+
project + "/dist/system/Test.js",
16+
];
17+
18+
for (let i in files) {
19+
let code = fs.readFileSync(files[i], 'utf-8');
20+
let options = {};
21+
let pretty_code = await minify(code, options);
22+
try {
23+
let file_name = files[i].substring(0, files[i].lastIndexOf('.'))
24+
let file_ext = files[i].split('.').pop();
25+
let file_min = file_name+'.min.'+file_ext;
26+
fs.writeFileSync(file_min, pretty_code.code,'utf-8');
27+
} catch(e) {
28+
console.error(e)
29+
}
30+
}
31+

build/pretty.js

Whitespace-only changes.

build/test/pretty.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import prettier from "prettier";
2+
import fs from 'fs-plus';
3+
import { fileURLToPath } from 'url';
4+
import { dirname } from 'path';
5+
const __filename = fileURLToPath(import.meta.url);
6+
const __dirname = dirname(__filename);
7+
let project = dirname(dirname(__dirname));
8+
9+
async function prettifyFileContent(fileContent) {
10+
let prettyFile;
11+
try {
12+
prettyFile = await prettier.format(fileContent, {
13+
semi: false,
14+
parser: "babel",
15+
});
16+
return prettyFile;
17+
} catch (error) {
18+
console.error("Error prettifying file:", error);
19+
return null;
20+
}
21+
return;
22+
}
23+
24+
let code = {
25+
test: project + '/test/html/legacy/test.js',
26+
amd: project+ '/test/html/legacy/test.amd.js',
27+
system: project+ '/test/html/legacy/test.system.js'
28+
}
29+
let source = {
30+
test: fs.readFileSync( code.test, 'utf-8'),
31+
amd: fs.readFileSync( code.amd, 'utf-8'),
32+
system: fs.readFileSync( code.system, 'utf-8')
33+
}
34+
try {
35+
let result = {
36+
test: await prettifyFileContent(source.test),
37+
amd: await prettifyFileContent(source.amd),
38+
system: await prettifyFileContent(source.system)
39+
}
40+
if(result.test) fs.writeFileSync(code.test, result.test, 'utf-8');
41+
if(result.amd) fs.writeFileSync(code.amd, result.amd, 'utf-8');
42+
if(result.system) fs.writeFileSync(code.system, result.system, 'utf-8');
43+
} catch(e) {
44+
console.error(e)
45+
}

dist/Test.min.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
function Test(){let e=[],t="";function n(e,t){if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return e===t;const r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;for(let o of r)if(!t.hasOwnProperty(o)||!n(e[o],t[o]))return!1;return!0}return{describe:function(n,r){e=[],t=n,r(),function(){if(!e||0===e.length)return void console.warn("Zero cases");let t=null;if("undefined"!=typeof window){const n=document.getElementById("test-results")||document.createElement("pre");return n.id="test-results",n.style.fontSize="110%",document.getElementById("test-results")||document.body.appendChild(n),void e.forEach(e=>{const r=e.description.split(" - ")[0],o=e.description.split(" - ")[1];if(t!==r){t=r;const e=document.createElement("h2");e.textContent=t,n.appendChild(e)}const i=document.createElement("p");try{e.fn(),i.textContent=`✔ ${o}`,i.style.color="green"}catch(e){i.textContent=`✖ ${o} - ${e.message}`,i.style.color="red"}n.appendChild(i)})}e.forEach(e=>{t!==e.description.split(" - ")[0]&&(null!==t&&console.groupEnd(),t=e.description.split(" - ")[0],console.group(t));try{e.fn(),console.log(`✔ ${e.description}`)}catch(t){console.error(`✖ ${e.description} - ${t.message}`)}}),null!==t&&console.groupEnd()}()},it:function(n,r){e.push({description:t+" - "+n,fn:r})},assert:function(e,t=""){if("undefined"!=typeof window){if(Array.isArray(e)&&2===e.length){if(!n(e[0],e[1]))throw new Error(t+` Expected ${JSON.stringify(e[0])} equals ${JSON.stringify(e[1])}`)}else if(!e)throw new Error(t+` Expected ${String(e)}`)}else if(Array.isArray(e)&&2===e.length){if(!n(e[0],e[1]))throw new Error(t+` Expected ${JSON.stringify(e[0])} equals ${JSON.stringify(e[1])}`)}else if(!e)throw new Error(t+` Expected ${String(e)}`)}}}module.exports=Test;

dist/Test.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/Test.min.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
function Test(){let e=[],t="";function n(e,t){if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return e===t;const r=Object.keys(e),o=Object.keys(t);if(r.length!==o.length)return!1;for(let o of r)if(!t.hasOwnProperty(o)||!n(e[o],t[o]))return!1;return!0}return{describe:function(n,r){e=[],t=n,r(),function(){if(!e||0===e.length)return void console.warn("Zero cases");let t=null;if("undefined"!=typeof window){const n=document.getElementById("test-results")||document.createElement("pre");return n.id="test-results",n.style.fontSize="110%",document.getElementById("test-results")||document.body.appendChild(n),void e.forEach(e=>{const r=e.description.split(" - ")[0],o=e.description.split(" - ")[1];if(t!==r){t=r;const e=document.createElement("h2");e.textContent=t,n.appendChild(e)}const i=document.createElement("p");try{e.fn(),i.textContent=`✔ ${o}`,i.style.color="green"}catch(e){i.textContent=`✖ ${o} - ${e.message}`,i.style.color="red"}n.appendChild(i)})}e.forEach(e=>{t!==e.description.split(" - ")[0]&&(null!==t&&console.groupEnd(),t=e.description.split(" - ")[0],console.group(t));try{e.fn(),console.log(`✔ ${e.description}`)}catch(t){console.error(`✖ ${e.description} - ${t.message}`)}}),null!==t&&console.groupEnd()}()},it:function(n,r){e.push({description:t+" - "+n,fn:r})},assert:function(e,t=""){if("undefined"!=typeof window){if(Array.isArray(e)&&2===e.length){if(!n(e[0],e[1]))throw new Error(t+` Expected ${JSON.stringify(e[0])} equals ${JSON.stringify(e[1])}`)}else if(!e)throw new Error(t+` Expected ${String(e)}`)}else if(Array.isArray(e)&&2===e.length){if(!n(e[0],e[1]))throw new Error(t+` Expected ${JSON.stringify(e[0])} equals ${JSON.stringify(e[1])}`)}else if(!e)throw new Error(t+` Expected ${String(e)}`)}}}export default Test;

dist/amd/Test.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/system/Test.min.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 80 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,11 @@
3737
"scripts": {
3838
"build:module": "node ./build/module.js",
3939
"build:legacy": "node ./build/legacy.js",
40-
"build:other": "node ./build/other.js",
40+
"build:other": "node ./build/other.js && npm run build:module && npm run build:legacy",
4141
"build:test": "node ./build/test/terminal.js && node ./build/test/browser.js",
42-
"build": "npm run build:module && npm run build:legacy && npm run build:other && npm run build:test",
42+
"build": "npm run build:other && npm run build:test",
43+
"pretty": "node build/test/pretty.js",
44+
"minify": "node build/minify.js",
4345
"test:cjs": "node ./test/terminal/common.cjs",
4446
"test:mjs": "node ./test/terminal/module.mjs",
4547
"test:html": "http-server -c-1 -p 8080 & opener http://localhost:8080/test/html",
@@ -53,6 +55,7 @@
5355
"fs-plus": "^3.1.1",
5456
"http-server": "^14.1.1",
5557
"prettier": "^3.6.2",
56-
"systemjs": "^6.15.1"
58+
"systemjs": "^6.15.1",
59+
"terser": "^5.43.1"
5760
}
5861
}

0 commit comments

Comments
 (0)