You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/05/26 14:37:13 UTC
[incubator-echarts] 02/02: chore: try esbuild to improve rebuild
speed in dev mode.
This is an automated email from the ASF dual-hosted git repository.
shenyi pushed a commit to branch next
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git
commit 4d8fbea69eafc807c3aa935314f0f962177ea53f
Author: pissang <bm...@gmail.com>
AuthorDate: Tue May 26 22:36:39 2020 +0800
chore: try esbuild to improve rebuild speed in dev mode.
Rebuild cost reduced to 100ms on macbook 15. Build target is always ES6 in dev.
---
build/dev-fast.js | 52 +++++++++++++++++++++++++
package-lock.json | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
package.json | 3 ++
3 files changed, 168 insertions(+)
diff --git a/build/dev-fast.js b/build/dev-fast.js
new file mode 100644
index 0000000..d609f16
--- /dev/null
+++ b/build/dev-fast.js
@@ -0,0 +1,52 @@
+const chokidar = require('chokidar');
+const path = require('path');
+const {build} = require('esbuild');
+const fs = require('fs');
+
+const outFilePath = path.resolve(__dirname, '../dist/echarts.js');
+
+const umdWrapperHead = `
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['exports'], factory);
+ } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
+ // CommonJS
+ factory(exports);
+ } else {
+ // Browser globals
+ factory((root.echarts = {}));
+ }
+}(typeof self !== 'undefined' ? self : this, function (exports, b) {
+`;
+
+const umdWrapperTail = `
+}));`;
+
+// attach properties to the exports object to define
+// the exported module properties.
+exports.action = function () {};
+
+function rebuild() {
+ build({
+ stdio: 'inherit',
+ entryPoints: [path.resolve(__dirname, '../echarts.all.ts')],
+ outfile: outFilePath,
+ format: 'cjs',
+ bundle: true,
+ }).catch(e => {
+ console.error(e.toString());
+ }).then(() => {
+ const mainCode = fs.readFileSync(outFilePath, 'utf-8');
+ fs.writeFileSync(outFilePath, umdWrapperHead + mainCode + umdWrapperTail)
+ })
+}
+
+chokidar.watch([
+ path.resolve(__dirname, '../src/**/*.ts'),
+ path.resolve(__dirname, '../node_modules/zrender/src/**/*.ts'),
+], {
+ persistent: true
+}).on('change', rebuild).on('ready', function () {
+ rebuild();
+})
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index ebb71d9..5514063 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1610,6 +1610,12 @@
"callsite": "1.0.0"
}
},
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "dev": true
+ },
"blob": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
@@ -1809,6 +1815,89 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "chokidar": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
+ "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==",
+ "dev": true,
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.4.0"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "fsevents": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "dev": true,
+ "optional": true
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
"chownr": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
@@ -2482,6 +2571,12 @@
"is-symbol": "^1.0.2"
}
},
+ "esbuild": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.4.1.tgz",
+ "integrity": "sha512-84KjyYa1hgrHe01Qrsbf+anzcWWf6EA51TtRzZwLtphNd/Zf+V/fBT0jd3I+F+p+gB7+MFAS9pw4pxXOWPhHkA==",
+ "dev": true
+ },
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -4229,6 +4324,15 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -6714,6 +6818,15 @@
}
}
},
+ "readdirp": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
"realpath-native": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz",
diff --git a/package.json b/package.json
index 10ed5d1..113298f 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
"build": "node build/build.js",
"build:full": "node build/build.js --clean",
"watch": "node build/build.js --watch",
+ "dev:fast": "node build/dev-fast.js",
"release": "node build/build.js --release",
"help": "node build/build.js --help",
"test:visual": "node test/runTest/server.js",
@@ -41,8 +42,10 @@
"@typescript-eslint/parser": "^2.18.0",
"canvas": "^2.6.0",
"chalk": "^3.0.0",
+ "chokidar": "^3.4.0",
"commander": "2.11.0",
"coordtransform": "2.0.2",
+ "esbuild": "^0.4.1",
"escodegen": "1.8.0",
"eslint": "6.3.0",
"esprima": "2.7.2",
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org