Skip to content

Commit f68ef8f

Browse files
authoredNov 13, 2021
change exports to fix bundles (#1812)
* change exports to fix bundles * use browserify for bundling * revert exports * use browserify in bundle script
1 parent 8fccddb commit f68ef8f

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed
 

‎package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"test-codegen": "nyc cross-env TS_NODE_PROJECT=spec/tsconfig.json mocha -r ts-node/register 'spec/codegen.spec.ts' -R spec",
1818
"test-debug": "npm run test-spec -- --inspect-brk",
1919
"test-cov": "nyc npm run test-spec",
20-
"bundle": "rm -rf bundle && rollup -c",
20+
"rollup": "rm -rf bundle && rollup -c",
21+
"bundle": "rm -rf bundle && node ./scripts/bundle.js ajv ajv7 ajv7 && node ./scripts/bundle.js 2019 ajv2019 ajv2019 && node ./scripts/bundle.js 2020 ajv2020 ajv2020 && node ./scripts/bundle.js jtd ajvJTD ajvJTD",
2122
"build": "rm -rf dist && tsc && cp -r lib/refs dist && rm dist/refs/json-schema-2019-09/index.ts && rm dist/refs/json-schema-2020-12/index.ts && rm dist/refs/jtd-schema.ts",
2223
"json-tests": "rm -rf spec/_json/*.js && node scripts/jsontests",
2324
"test-karma": "karma start",
@@ -75,6 +76,7 @@
7576
"@typescript-eslint/eslint-plugin": "^3.8.0",
7677
"@typescript-eslint/parser": "^3.8.0",
7778
"ajv-formats": "^3.0.0-rc.0",
79+
"browserify": "^17.0.0",
7880
"chai": "^4.0.1",
7981
"cross-env": "^7.0.2",
8082
"dayjs": "^1.10.4",

‎rollup.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function createBundleConfig(sourceFile, outFile, globalName) {
2626
}
2727

2828
export default [
29-
createBundleConfig("ajv", "ajv7", "av7"),
29+
createBundleConfig("ajv", "ajv7", "ajv7"),
3030
createBundleConfig("2019", "ajv2019", "ajv2019"),
3131
createBundleConfig("2020", "ajv2020", "ajv2020"),
3232
createBundleConfig("jtd", "ajvJTD", "ajvJTD"),

‎scripts/bundle.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"use strict"
2+
3+
const fs = require("fs")
4+
const path = require("path")
5+
const browserify = require("browserify")
6+
const {minify} = require("terser")
7+
8+
const [sourceFile, outFile, globalName] = process.argv.slice(2)
9+
10+
const json = require(path.join(__dirname, "..", "package.json"))
11+
const bundleDir = path.join(__dirname, "..", "bundle")
12+
if (!fs.existsSync(bundleDir)) fs.mkdirSync(bundleDir)
13+
14+
browserify({standalone: globalName})
15+
.require(path.join(__dirname, "../dist", sourceFile), {expose: sourceFile})
16+
.bundle(saveAndMinify)
17+
18+
async function saveAndMinify(err, buf) {
19+
if (err) {
20+
console.error("browserify error:", err)
21+
process.exit(1)
22+
}
23+
24+
const bundlePath = path.join(bundleDir, outFile)
25+
const opts = {
26+
ecma: 2018,
27+
warnings: true,
28+
compress: {
29+
pure_getters: true,
30+
keep_infinity: true,
31+
unsafe_methods: true,
32+
},
33+
format: {
34+
preamble: `/* ${json.name} ${json.version} (${globalName}): ${json.description} */`,
35+
},
36+
sourceMap: {
37+
filename: outFile + ".min.js",
38+
url: outFile + ".min.js.map",
39+
},
40+
}
41+
42+
const result = await minify(buf.toString(), opts)
43+
44+
fs.writeFileSync(bundlePath + ".bundle.js", buf)
45+
fs.writeFileSync(bundlePath + ".min.js", result.code)
46+
fs.writeFileSync(bundlePath + ".min.js.map", result.map)
47+
if (result.warnings) result.warnings.forEach((msg) => console.warn("terser.minify warning:", msg))
48+
}

0 commit comments

Comments
 (0)
Please sign in to comment.