diff --git a/.github/contributing.md b/.github/contributing.md
index 5c50f8a9..2b0995a1 100644
--- a/.github/contributing.md
+++ b/.github/contributing.md
@@ -123,16 +123,19 @@ The `dev` script bundles a target package (default: `vue`) in a specified format
```bash
$ nr dev
-> rollup v1.19.4
-> bundles packages/vue/src/index.ts → packages/vue/dist/vue.global.js...
+> watching: packages/vue/dist/vue.global.js
```
-- The `dev` script also supports fuzzy match for the target package, but will only match the first package matched.
+- **Important:** output of the `dev` script is for development and debugging only. While it has the same runtime behavior, the generated code should never be published to npm.
+
+- The `dev` script does not support fuzzy match - you must specify the full package name, e.g. `nr dev runtime-core`.
- The `dev` script supports specifying build format via the `-f` flag just like the `build` script.
- The `dev` script also supports the `-s` flag for generating source maps, but it will make rebuilds slower.
+- The `dev` script supports the `-i` flag for inlining all deps. This is useful when debugging `esm-bundler` builds which externalizes deps by default.
+
### `nr dev-compiler`
The `dev-compiler` script builds, watches and serves the [Template Explorer](https://github.com/vuejs/vue-next/tree/master/packages/template-explorer) at `http://localhost:5000`. This is extremely useful when working on the compiler.
diff --git a/package.json b/package.json
index 5bfd59dc..30762ca3 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
"release": "node scripts/release.js",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
"dev-compiler": "run-p \"dev template-explorer\" serve",
- "dev-sfc": "run-p \"dev compiler-sfc -- -f esm-browser\" \"dev runtime-core -- -f esm-bundler\" \"dev runtime-dom -- -f esm-bundler\" serve-sfc-playground",
+ "dev-sfc": "run-p \"dev compiler-sfc -- -f esm-browser\" \"dev vue -- -if esm-bundler-runtime \" serve-sfc-playground",
"serve-sfc-playground": "vite packages/sfc-playground --host",
"serve": "serve",
"open": "open http://localhost:5000/packages/template-explorer/local.html",
@@ -48,6 +48,7 @@
},
"devDependencies": {
"@babel/types": "^7.12.0",
+ "@esbuild-plugins/node-modules-polyfill": "^0.1.4",
"@microsoft/api-extractor": "^7.15.1",
"@rollup/plugin-commonjs": "^18.0.0",
"@rollup/plugin-json": "^4.0.0",
@@ -66,6 +67,7 @@
"conventional-changelog-cli": "^2.0.31",
"csstype": "^3.0.3",
"enquirer": "^2.3.2",
+ "esbuild": "^0.14.11",
"eslint": "^7.7.0",
"execa": "^4.0.2",
"fs-extra": "^9.0.1",
@@ -86,11 +88,11 @@
"semver": "^7.3.2",
"serve": "^12.0.0",
"todomvc-app-css": "^2.3.0",
- "tslib": "^2.3.1",
"ts-jest": "^27.0.5",
+ "tslib": "^2.3.1",
"typescript": "^4.2.2",
- "vue": "workspace:*",
"vite": "^2.7.1",
+ "vue": "workspace:*",
"yorkie": "^2.0.0"
}
}
diff --git a/packages/template-explorer/src/index.ts b/packages/template-explorer/src/index.ts
index 7b7e2ae2..d676c717 100644
--- a/packages/template-explorer/src/index.ts
+++ b/packages/template-explorer/src/index.ts
@@ -62,7 +62,7 @@ window.init = () => {
if (persistedState) {
// functions are not persistable, so delete it in case we sometimes need
// to debug with custom nodeTransforms
- delete persistedState.options.nodeTransforms
+ delete persistedState.options?.nodeTransforms
ssrMode.value = persistedState.ssr
Object.assign(compilerOptions, persistedState.options)
}
@@ -142,7 +142,7 @@ window.init = () => {
}
const editor = monaco.editor.create(document.getElementById('source')!, {
- value: persistedState?.src || `
Hello World!
`,
+ value: persistedState?.src || `Hello World
`,
language: 'html',
...sharedEditorOptions,
wordWrap: 'bounded'
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5a068cfb..4237878a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,6 +5,7 @@ importers:
.:
specifiers:
'@babel/types': ^7.12.0
+ '@esbuild-plugins/node-modules-polyfill': ^0.1.4
'@microsoft/api-extractor': ^7.15.1
'@rollup/plugin-commonjs': ^18.0.0
'@rollup/plugin-json': ^4.0.0
@@ -23,6 +24,7 @@ importers:
conventional-changelog-cli: ^2.0.31
csstype: ^3.0.3
enquirer: ^2.3.2
+ esbuild: ^0.14.11
eslint: ^7.7.0
execa: ^4.0.2
fs-extra: ^9.0.1
@@ -51,6 +53,7 @@ importers:
yorkie: ^2.0.0
devDependencies:
'@babel/types': 7.16.0
+ '@esbuild-plugins/node-modules-polyfill': 0.1.4_esbuild@0.14.11
'@microsoft/api-extractor': 7.19.2
'@rollup/plugin-commonjs': 18.1.0_rollup@2.38.5
'@rollup/plugin-json': 4.1.0_rollup@2.38.5
@@ -69,6 +72,7 @@ importers:
conventional-changelog-cli: 2.1.1
csstype: 3.0.10
enquirer: 2.3.6
+ esbuild: 0.14.11
eslint: 7.32.0
execa: 4.1.0
fs-extra: 9.1.0
@@ -89,7 +93,7 @@ importers:
semver: 7.3.5
serve: 12.0.1
todomvc-app-css: 2.4.1
- ts-jest: 27.1.1_dc33159234d58f1c7ac35b6119da0e94
+ ts-jest: 27.1.1_305b6a4a69ca4f1a88855b62d81fc1b0
tslib: 2.3.1
typescript: 4.5.3
vite: 2.7.1
@@ -629,6 +633,16 @@ packages:
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
dev: true
+ /@esbuild-plugins/node-modules-polyfill/0.1.4_esbuild@0.14.11:
+ resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==}
+ peerDependencies:
+ esbuild: '*'
+ dependencies:
+ esbuild: 0.14.11
+ escape-string-regexp: 4.0.0
+ rollup-plugin-node-polyfills: 0.2.1
+ dev: true
+
/@eslint/eslintrc/0.4.3:
resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -2584,6 +2598,14 @@ packages:
dev: true
optional: true
+ /esbuild-android-arm64/0.14.11:
+ resolution: {integrity: sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-darwin-64/0.13.15:
resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==}
cpu: [x64]
@@ -2592,6 +2614,14 @@ packages:
dev: true
optional: true
+ /esbuild-darwin-64/0.14.11:
+ resolution: {integrity: sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-darwin-arm64/0.13.15:
resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==}
cpu: [arm64]
@@ -2600,6 +2630,14 @@ packages:
dev: true
optional: true
+ /esbuild-darwin-arm64/0.14.11:
+ resolution: {integrity: sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-freebsd-64/0.13.15:
resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==}
cpu: [x64]
@@ -2608,6 +2646,14 @@ packages:
dev: true
optional: true
+ /esbuild-freebsd-64/0.14.11:
+ resolution: {integrity: sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA==}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-freebsd-arm64/0.13.15:
resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==}
cpu: [arm64]
@@ -2616,6 +2662,14 @@ packages:
dev: true
optional: true
+ /esbuild-freebsd-arm64/0.14.11:
+ resolution: {integrity: sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w==}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-32/0.13.15:
resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==}
cpu: [ia32]
@@ -2624,6 +2678,14 @@ packages:
dev: true
optional: true
+ /esbuild-linux-32/0.14.11:
+ resolution: {integrity: sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg==}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-64/0.13.15:
resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==}
cpu: [x64]
@@ -2632,6 +2694,14 @@ packages:
dev: true
optional: true
+ /esbuild-linux-64/0.14.11:
+ resolution: {integrity: sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-arm/0.13.15:
resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==}
cpu: [arm]
@@ -2640,6 +2710,14 @@ packages:
dev: true
optional: true
+ /esbuild-linux-arm/0.14.11:
+ resolution: {integrity: sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-arm64/0.13.15:
resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==}
cpu: [arm64]
@@ -2648,6 +2726,14 @@ packages:
dev: true
optional: true
+ /esbuild-linux-arm64/0.14.11:
+ resolution: {integrity: sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-mips64le/0.13.15:
resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==}
cpu: [mips64el]
@@ -2656,6 +2742,14 @@ packages:
dev: true
optional: true
+ /esbuild-linux-mips64le/0.14.11:
+ resolution: {integrity: sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw==}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-linux-ppc64le/0.13.15:
resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==}
cpu: [ppc64]
@@ -2664,6 +2758,22 @@ packages:
dev: true
optional: true
+ /esbuild-linux-ppc64le/0.14.11:
+ resolution: {integrity: sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ==}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.14.11:
+ resolution: {integrity: sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw==}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-netbsd-64/0.13.15:
resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==}
cpu: [x64]
@@ -2672,6 +2782,14 @@ packages:
dev: true
optional: true
+ /esbuild-netbsd-64/0.14.11:
+ resolution: {integrity: sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw==}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-openbsd-64/0.13.15:
resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==}
cpu: [x64]
@@ -2680,6 +2798,14 @@ packages:
dev: true
optional: true
+ /esbuild-openbsd-64/0.14.11:
+ resolution: {integrity: sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q==}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-sunos-64/0.13.15:
resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==}
cpu: [x64]
@@ -2688,6 +2814,14 @@ packages:
dev: true
optional: true
+ /esbuild-sunos-64/0.14.11:
+ resolution: {integrity: sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg==}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-windows-32/0.13.15:
resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==}
cpu: [ia32]
@@ -2696,6 +2830,14 @@ packages:
dev: true
optional: true
+ /esbuild-windows-32/0.14.11:
+ resolution: {integrity: sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-windows-64/0.13.15:
resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==}
cpu: [x64]
@@ -2704,6 +2846,14 @@ packages:
dev: true
optional: true
+ /esbuild-windows-64/0.14.11:
+ resolution: {integrity: sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild-windows-arm64/0.13.15:
resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==}
cpu: [arm64]
@@ -2712,6 +2862,14 @@ packages:
dev: true
optional: true
+ /esbuild-windows-arm64/0.14.11:
+ resolution: {integrity: sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/esbuild/0.13.15:
resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==}
hasBin: true
@@ -2736,6 +2894,31 @@ packages:
esbuild-windows-arm64: 0.13.15
dev: true
+ /esbuild/0.14.11:
+ resolution: {integrity: sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg==}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ esbuild-android-arm64: 0.14.11
+ esbuild-darwin-64: 0.14.11
+ esbuild-darwin-arm64: 0.14.11
+ esbuild-freebsd-64: 0.14.11
+ esbuild-freebsd-arm64: 0.14.11
+ esbuild-linux-32: 0.14.11
+ esbuild-linux-64: 0.14.11
+ esbuild-linux-arm: 0.14.11
+ esbuild-linux-arm64: 0.14.11
+ esbuild-linux-mips64le: 0.14.11
+ esbuild-linux-ppc64le: 0.14.11
+ esbuild-linux-s390x: 0.14.11
+ esbuild-netbsd-64: 0.14.11
+ esbuild-openbsd-64: 0.14.11
+ esbuild-sunos-64: 0.14.11
+ esbuild-windows-32: 0.14.11
+ esbuild-windows-64: 0.14.11
+ esbuild-windows-arm64: 0.14.11
+ dev: true
+
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -5859,6 +6042,15 @@ packages:
inherits: 2.0.4
dev: true
+ /rollup-plugin-inject/3.0.2:
+ resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==}
+ deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
+ dependencies:
+ estree-walker: 0.6.1
+ magic-string: 0.25.7
+ rollup-pluginutils: 2.8.2
+ dev: true
+
/rollup-plugin-node-builtins/2.1.2:
resolution: {integrity: sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k=}
dependencies:
@@ -5879,6 +6071,12 @@ packages:
rollup-pluginutils: 2.8.2
dev: true
+ /rollup-plugin-node-polyfills/0.2.1:
+ resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==}
+ dependencies:
+ rollup-plugin-inject: 3.0.2
+ dev: true
+
/rollup-plugin-polyfill-node/0.6.2_rollup@2.38.5:
resolution: {integrity: sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA==}
dependencies:
@@ -6528,7 +6726,7 @@ packages:
engines: {node: '>=8'}
dev: true
- /ts-jest/27.1.1_dc33159234d58f1c7ac35b6119da0e94:
+ /ts-jest/27.1.1_305b6a4a69ca4f1a88855b62d81fc1b0:
resolution: {integrity: sha512-Ds0VkB+cB+8g2JUmP/GKWndeZcCKrbe6jzolGrVWdqVUFByY/2KDHqxJ7yBSon7hDB1TA4PXxjfZ+JjzJisvgA==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
hasBin: true
@@ -6551,6 +6749,7 @@ packages:
dependencies:
'@types/jest': 27.0.3
bs-logger: 0.2.6
+ esbuild: 0.14.11
fast-json-stable-stringify: 2.1.0
jest: 27.4.4
jest-util: 27.4.2
diff --git a/scripts/dev.js b/scripts/dev.js
index 49418dbf..621cbe63 100644
--- a/scripts/dev.js
+++ b/scripts/dev.js
@@ -1,44 +1,107 @@
-/*
-Run Rollup in watch mode for development.
+// Using esbuild for faster dev builds.
+// We are still using Rollup for production builds because it generates
+// smaller files w/ better tree-shaking.
-To specific the package to watch, simply pass its name and the desired build
-formats to watch (defaults to "global"):
-
-```
-# name supports fuzzy match. will watch all packages with name containing "dom"
-nr dev dom
-
-# specify the format to output
-nr dev core --formats cjs
-
-# Can also drop all __DEV__ blocks with:
-__DEV__=false nr dev
-```
-*/
-
-const execa = require('execa')
-const { fuzzyMatchTarget } = require('./utils')
+// @ts-check
+const { build } = require('esbuild')
+const nodePolyfills = require('@esbuild-plugins/node-modules-polyfill')
+const { resolve, relative } = require('path')
const args = require('minimist')(process.argv.slice(2))
-const target = args._.length ? fuzzyMatchTarget(args._)[0] : 'vue'
-const formats = args.formats || args.f
-const sourceMap = args.sourcemap || args.s
-const commit = execa.sync('git', ['rev-parse', 'HEAD']).stdout.slice(0, 7)
-execa(
- 'rollup',
- [
- '-wc',
- '--environment',
- [
- `COMMIT:${commit}`,
- `TARGET:${target}`,
- `FORMATS:${formats || 'global'}`,
- sourceMap ? `SOURCE_MAP:true` : ``
- ]
- .filter(Boolean)
- .join(',')
- ],
- {
- stdio: 'inherit'
- }
+const target = args._[0] || 'vue'
+const format = args.f || 'global'
+const inlineDeps = args.i || args.inline
+const pkg = require(resolve(__dirname, `../packages/${target}/package.json`))
+
+// resolve output
+const outputFormat = format.startsWith('global')
+ ? 'iife'
+ : format === 'cjs'
+ ? 'cjs'
+ : 'esm'
+
+const postfix = format.endsWith('-runtime')
+ ? `runtime.${format.replace(/-runtime$/, '')}`
+ : format
+
+const outfile = resolve(
+ __dirname,
+ `../packages/${target}/dist/${target}.${postfix}.js`
)
+const relativeOutfile = relative(process.cwd(), outfile)
+
+// resolve extenrals
+// TODO this logic is largely duplicated from rollup.config.js
+let external = []
+if (!inlineDeps) {
+ // cjs & esm-bundler: external all deps
+ if (format === 'cjs' || format.includes('esm-bundler')) {
+ external = [
+ ...external,
+ ...Object.keys(pkg.dependencies || {}),
+ ...Object.keys(pkg.peerDependencies || {}),
+ // for @vue/compiler-sfc / server-renderer
+ 'path',
+ 'url',
+ 'stream'
+ ]
+ }
+
+ if (target === 'compiler-sfc') {
+ const consolidateDeps = require.resolve('@vue/consolidate/package.json', {
+ paths: [resolve(__dirname, `../packages/${target}/`)]
+ })
+ external = [
+ ...external,
+ ...Object.keys(require(consolidateDeps).devDependencies),
+ 'fs',
+ 'vm',
+ 'crypto',
+ 'react-dom/server',
+ 'teacup/lib/express',
+ 'arc-templates/dist/es5',
+ 'then-pug',
+ 'then-jade'
+ ]
+ }
+}
+
+build({
+ entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
+ outfile,
+ bundle: true,
+ external,
+ sourcemap: true,
+ format: outputFormat,
+ globalName: pkg.buildOptions?.name,
+ platform: format === 'cjs' ? 'node' : 'browser',
+ plugins:
+ format === 'cjs' || pkg.buildOptions?.enableNonBrowserBranches
+ ? [nodePolyfills.default()]
+ : undefined,
+ define: {
+ __COMMIT__: `"dev"`,
+ __VERSION__: `"${pkg.version}"`,
+ __DEV__: `true`,
+ __TEST__: `false`,
+ __BROWSER__: String(
+ format !== 'cjs' && !pkg.buildOptions?.enableNonBrowserBranches
+ ),
+ __GLOBAL__: String(format === 'global'),
+ __ESM_BUNDLER__: String(format.includes('esm-bundler')),
+ __ESM_BROWSER__: String(format.includes('esm-browser')),
+ __NODE_JS__: String(format === 'cjs'),
+ __SSR__: String(format === 'cjs' || format.includes('esm-bundler')),
+ __COMPAT__: `false`,
+ __FEATURE_SUSPENSE__: `true`,
+ __FEATURE_OPTIONS_API__: `true`,
+ __FEATURE_PROD_DEVTOOLS__: `false`
+ },
+ watch: {
+ onRebuild(error) {
+ if (!error) console.log(`rebuilt: ${relativeOutfile}`)
+ }
+ }
+}).then(() => {
+ console.log(`watching: ${relativeOutfile}`)
+})