Skip to content

Commit a11b68a

Browse files
committed
feat: add AMD module support
1 parent 4b8032c commit a11b68a

File tree

6 files changed

+104
-0
lines changed

6 files changed

+104
-0
lines changed

build/babel.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,22 @@ async function compileToCJS(data) {
2828
resolve(output)
2929
})
3030
}
31+
async function compileToAMD(data) {
32+
return new Promise((resolve)=> {
33+
let output = babel.transform(data, {
34+
presets: ['@babel/preset-env'],
35+
plugins: ['@babel/plugin-transform-modules-amd']
36+
}).code;
37+
resolve(output)
38+
})
39+
}
3140
try {
3241
let code = await compile(input);
3342
fs.writeFileSync(project + '/dist/Test.js', code, 'utf-8');
3443
let code_cjs = await compileToCJS(input);
3544
fs.writeFileSync(project+'/dist/Test.cjs', code_cjs, 'utf-8');
45+
let code_amd = await compileToAMD(input);
46+
fs.writeFileSync(project+'/dist/Test.amd.js', code_amd, 'utf-8');
3647
} catch (e) {
3748
console.error(e)
3849
}

dist/Test.amd.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
define(["exports"], function (_exports) {
2+
"use strict";
3+
4+
Object.defineProperty(_exports, "__esModule", {
5+
value: true
6+
});
7+
_exports["default"] = void 0;
8+
function Test() {
9+
var cases = [];
10+
function describe(description, fn) {
11+
console.log("\n" + description);
12+
fn();
13+
}
14+
function it(description, fn) {
15+
cases.push({
16+
description: description,
17+
fn: fn
18+
});
19+
}
20+
function assert(condition, message) {
21+
if (message === void 0) message = "Failed";
22+
message = message || String(condition);
23+
if (!condition) {
24+
throw new Error(message);
25+
}
26+
}
27+
function run() {
28+
if (!cases || cases.length === 0) {
29+
console.warn("Zero cases");
30+
return;
31+
}
32+
cases.forEach(function (testCase) {
33+
try {
34+
testCase.fn();
35+
console.log("✔ " + testCase.description);
36+
} catch (error) {
37+
console.error("✖ " + testCase.description + " - " + error.message);
38+
}
39+
});
40+
}
41+
return {
42+
describe: describe,
43+
it: it,
44+
assert: assert,
45+
run: run
46+
};
47+
}
48+
var _default = _exports["default"] = Test;
49+
});

package-lock.json

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.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
},
4444
"devDependencies": {
4545
"@babel/core": "^7.28.3",
46+
"@babel/plugin-transform-modules-amd": "^7.27.1",
4647
"@babel/plugin-transform-modules-systemjs": "^7.27.1",
4748
"@babel/preset-env": "^7.28.3",
4849
"buble": "^0.20.0",

test/html/require.html

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<!DOCTYPE html>
2+
<html lang="en-US">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta http-equiv="Content-Type" content="text/html" />
6+
<meta http-equiv="X-UA-Compatible" content="IE=9" />
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
8+
<title>Test: require</title>
9+
<!-- <script src="../../node_modules/requirejs/require.js"></script> -->
10+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/require.min.js"></script>
11+
</head>
12+
<body>
13+
<script>
14+
require(["../../dist/Test.amd.js"], function (Test) {
15+
16+
const { describe, it, assert, run } = Test.default();
17+
18+
describe("Test", () => {
19+
it("should 5", () => {
20+
assert(2 + 3 === 5);
21+
});
22+
it("should 4", () => {
23+
assert(-1 + 5 === 5);
24+
});
25+
it("should 0", () => {
26+
assert(0 + 0 === 0);
27+
});
28+
});
29+
30+
run();
31+
});
32+
</script>
33+
</body>
34+
</html>

test/html/system.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<meta http-equiv="X-UA-Compatible" content="IE=9" />
77
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
88
<title>Test: system</title>
9+
<!-- <script src="../../node_modules/systemjs/dist/system.min.js"></script> -->
910
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/system.min.js"></script>
1011
</head>
1112
<body>
@@ -16,6 +17,13 @@
1617
}
1718
}
1819
</script>
20+
<!-- <script type="systemjs-importmap">
21+
{
22+
"imports": {
23+
"Test": "../../dist/Test.js"
24+
}
25+
}
26+
</script> -->
1927
<script>
2028
(async function () {
2129
const Test = await System.import(["Test"]);

0 commit comments

Comments
 (0)