forked from amzn/style-dictionary
-
Notifications
You must be signed in to change notification settings - Fork 0
/
prepublish.js
47 lines (44 loc) · 1.36 KB
/
prepublish.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const fs = require("fs");
const path = require("path");
const glob = require("glob");
const rollup = require("rollup");
const commonjs = require("@rollup/plugin-commonjs");
const json = require("@rollup/plugin-json");
const allJSFiles = glob.sync("**/*.js", {
fs,
ignore: [
"node_modules/**/*",
"__integration__/**/*",
"__tests__/**/*",
"examples/**/*",
],
});
allJSFiles.forEach((file) => {
const filePath = path.resolve(file);
const fileData = fs.readFileSync(filePath, "utf-8");
const replaced = fileData.replace(
/fs\.readFileSync\(\s*__dirname\s*\+\s*'\/templates\/(.*)'\)/g,
(match, $1) => {
const tpl = path.join("./lib/common/templates", $1);
return JSON.stringify(fs.readFileSync(tpl, "utf8"));
}
).replace(
/fs\.readFileSync\(\s*path\.resolve\(__dirname\s*\,\s*`\.\.\/\.\.\/types\/(.*)`\)\s*,\s*{\s*encoding:\s*'UTF-8'\s*}\s*\);/g,
(match, $1) => {
const tpl = path.join("./types", $1);
return JSON.stringify(fs.readFileSync(tpl, "utf8"));
});
if (replaced !== fileData) {
fs.writeFileSync(filePath, replaced, "utf-8");
}
});
(async () => {
const bundle = await rollup.rollup({
input: "format-helpers.js",
plugins: [json(), commonjs()],
});
const { output } = await bundle.generate({
format: "es",
});
fs.writeFileSync("format-helpers.esm.js", output[0].code, "utf-8");
})();