From 10ac99c1b4f36ea2c31a6aaf83de5790675a8a56 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 19 Apr 2022 01:04:46 -0700 Subject: [PATCH 01/11] add `@rollup/plugin-sucrase` --- package.json | 1 + yarn.lock | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a9990a79561b..7e1ce332ac3f 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "@rollup/plugin-commonjs": "^21.0.1", "@rollup/plugin-node-resolve": "^13.1.3", "@rollup/plugin-replace": "^3.0.1", + "@rollup/plugin-sucrase": "^4.0.3", "@size-limit/preset-small-lib": "^4.5.5", "@strictsoftware/typedoc-plugin-monorepo": "^0.3.1", "@types/chai": "^4.1.3", diff --git a/yarn.lock b/yarn.lock index 9304663e7767..6b21e6baa196 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4197,6 +4197,14 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" +"@rollup/plugin-sucrase@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-sucrase/-/plugin-sucrase-4.0.3.tgz#b972ba61db0faaba397e09daaffcdbd38c167e2c" + integrity sha512-gZrjT985isK+EmHt3Dyr9z4JfO9IGuYkxck96yIyIUU9EKnZtDXUZ6ap5kvIdEnY8kLeiypiUEfK+/QtMIlA2A== + dependencies: + "@rollup/pluginutils" "^4.1.1" + sucrase "^3.20.0" + "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -4206,6 +4214,14 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/pluginutils@^4.1.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + "@rollup/pluginutils@^4.1.2": version "4.1.2" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" @@ -5959,6 +5975,11 @@ ansicolors@~0.2.1: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -9077,7 +9098,7 @@ commander@^3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^4.1.1: +commander@^4.0.0, commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -18100,6 +18121,15 @@ mysql@^2.18.1: safe-buffer "5.1.2" sqlstring "2.3.1" +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" @@ -23469,6 +23499,18 @@ stylus@0.54.8, stylus@^0.54.7: semver "^6.3.0" source-map "^0.7.3" +sucrase@^3.20.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.21.0.tgz#6a5affdbe716b22e4dc99c57d366ad0d216444b9" + integrity sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + sum-up@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/sum-up/-/sum-up-1.0.3.tgz#1c661f667057f63bcb7875aa1438bc162525156e" @@ -23878,6 +23920,20 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -24176,6 +24232,11 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + ts-jest@^27.1.4: version "27.1.4" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" From a9555a5aff5e0b1d535a1abc97f73a0605256bb7 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 19 Apr 2022 01:26:52 -0700 Subject: [PATCH 02/11] add functions for making npm rollup configs --- rollup/index.js | 1 + rollup/npmHelpers.js | 70 ++++++++++++++++++++++++++++++++++++ rollup/plugins/index.js | 1 + rollup/plugins/npmPlugins.js | 16 +++++++++ 4 files changed, 88 insertions(+) create mode 100644 rollup/npmHelpers.js create mode 100644 rollup/plugins/npmPlugins.js diff --git a/rollup/index.js b/rollup/index.js index 51baa9ba247c..2ae4712165ad 100644 --- a/rollup/index.js +++ b/rollup/index.js @@ -5,4 +5,5 @@ import * as plugins from './plugins/index.js'; export { plugins }; export * from './bundleHelpers.js'; +export * from './npmHelpers.js'; export { insertAt } from './utils.js'; diff --git a/rollup/npmHelpers.js b/rollup/npmHelpers.js new file mode 100644 index 000000000000..5a04ba70ed3b --- /dev/null +++ b/rollup/npmHelpers.js @@ -0,0 +1,70 @@ +/** + * Rollup config docs: https://rollupjs.org/guide/en/#big-list-of-options + */ + +import { builtinModules } from 'module'; +import * as path from 'path'; + +import deepMerge from 'deepmerge'; + +import { makeNodeResolvePlugin, makeSucrasePlugin } from './plugins/index.js'; + +const packageDotJSON = require(path.resolve(process.cwd(), './package.json')); + +export function makeBaseNPMConfig(options = {}) { + const { entrypoints = ['src/index.ts'] } = options; + + const nodeResolvePlugin = makeNodeResolvePlugin(); + const sucrasePlugin = makeSucrasePlugin(); + + return { + input: entrypoints, + + output: { + sourcemap: true, + + // output individual files rather than one big bundle + preserveModules: true, + + // any wrappers or helper functions generated by rollup can use ES6 features + generatedCode: 'es2015', + + // don't add `"use strict"` to the top of cjs files + strict: false, + + // do TS-3.8-style exports + // exports.dogs = are.great + // rather than TS-3.9-style exports + // Object.defineProperty(exports, 'dogs', { + // enumerable: true, + // get: () => are.great, + // }); + externalLiveBindings: false, + }, + + plugins: [nodeResolvePlugin, sucrasePlugin], + + // don't include imported modules from outside the package in the final output + external: [ + ...builtinModules, + ...Object.keys(packageDotJSON.dependencies || {}), + ...Object.keys(packageDotJSON.devDependencies || {}), + ...Object.keys(packageDotJSON.peerDependencies || {}), + ], + + // TODO `'smallest'` will get rid of `isDebugBuild()` by evaluating it and inlining the result and then treeshaking + // from there. The current setting (false) prevents this, in case we want to leave it there for users to use in + // their own bundling. That said, we don't yet know for sure that that works, so come back to this. + // treeshake: 'smallest', + treeshake: false, + }; +} + +export function makeNPMConfigVariants(baseConfig) { + const variantSpecificConfigs = [ + { output: { format: 'cjs', dir: 'build/cjs' } }, + { output: { format: 'esm', dir: 'build/esm' } }, + ]; + + return variantSpecificConfigs.map(variant => deepMerge(baseConfig, variant)); +} diff --git a/rollup/plugins/index.js b/rollup/plugins/index.js index bb05969c2caf..014b3b383b4d 100644 --- a/rollup/plugins/index.js +++ b/rollup/plugins/index.js @@ -1 +1,2 @@ export * from './bundlePlugins'; +export * from './npmPlugins'; diff --git a/rollup/plugins/npmPlugins.js b/rollup/plugins/npmPlugins.js new file mode 100644 index 000000000000..5f4c443682ef --- /dev/null +++ b/rollup/plugins/npmPlugins.js @@ -0,0 +1,16 @@ +/** + * Sucrase plugin docs: https://github.com/rollup/plugins/tree/master/packages/sucrase + */ + +import sucrase from '@rollup/plugin-sucrase'; + +/** + * Create a plugin to transpile TS syntax using `sucrase`. + * + * @returns An instance of the `@rollup/plugin-sucrase` plugin + */ +export function makeSucrasePlugin() { + return sucrase({ + transforms: ['typescript', 'jsx'], + }); +} From 2239711a300bd7d18dc2d2e400c65839232c3528 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 19 Apr 2022 01:51:07 -0700 Subject: [PATCH 03/11] add option to handle build directory structure of packages with bundles --- rollup/npmHelpers.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rollup/npmHelpers.js b/rollup/npmHelpers.js index 5a04ba70ed3b..be40392c4660 100644 --- a/rollup/npmHelpers.js +++ b/rollup/npmHelpers.js @@ -12,7 +12,7 @@ import { makeNodeResolvePlugin, makeSucrasePlugin } from './plugins/index.js'; const packageDotJSON = require(path.resolve(process.cwd(), './package.json')); export function makeBaseNPMConfig(options = {}) { - const { entrypoints = ['src/index.ts'] } = options; + const { entrypoints = ['src/index.ts'], hasBundles = false } = options; const nodeResolvePlugin = makeNodeResolvePlugin(); const sucrasePlugin = makeSucrasePlugin(); @@ -21,6 +21,9 @@ export function makeBaseNPMConfig(options = {}) { input: entrypoints, output: { + // an appropriately-named directory will be added to this base value when we specify either a cjs or esm build + dir: hasBundles ? 'build/npm' : 'build', + sourcemap: true, // output individual files rather than one big bundle @@ -62,8 +65,8 @@ export function makeBaseNPMConfig(options = {}) { export function makeNPMConfigVariants(baseConfig) { const variantSpecificConfigs = [ - { output: { format: 'cjs', dir: 'build/cjs' } }, - { output: { format: 'esm', dir: 'build/esm' } }, + { output: { format: 'cjs', dir: path.join(baseConfig.output.dir, 'cjs') } }, + { output: { format: 'esm', dir: path.join(baseConfig.output.dir, 'esm') } }, ]; return variantSpecificConfigs.map(variant => deepMerge(baseConfig, variant)); From 4a3618bbd59988bef73a95a8dec8b87f6d7516e5 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 20 Apr 2022 21:06:08 -0700 Subject: [PATCH 04/11] add `externals` option --- rollup/npmHelpers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rollup/npmHelpers.js b/rollup/npmHelpers.js index be40392c4660..faf1ae6b0744 100644 --- a/rollup/npmHelpers.js +++ b/rollup/npmHelpers.js @@ -12,7 +12,7 @@ import { makeNodeResolvePlugin, makeSucrasePlugin } from './plugins/index.js'; const packageDotJSON = require(path.resolve(process.cwd(), './package.json')); export function makeBaseNPMConfig(options = {}) { - const { entrypoints = ['src/index.ts'], hasBundles = false } = options; + const { entrypoints = ['src/index.ts'], externals: packageSpecificExternals = [], hasBundles = false } = options; const nodeResolvePlugin = makeNodeResolvePlugin(); const sucrasePlugin = makeSucrasePlugin(); @@ -53,6 +53,7 @@ export function makeBaseNPMConfig(options = {}) { ...Object.keys(packageDotJSON.dependencies || {}), ...Object.keys(packageDotJSON.devDependencies || {}), ...Object.keys(packageDotJSON.peerDependencies || {}), + ...packageSpecificExternals, ], // TODO `'smallest'` will get rid of `isDebugBuild()` by evaluating it and inlining the result and then treeshaking From 6b44bfd2677f360697c10e0bb7e529bff8a77a24 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 20 Apr 2022 21:13:37 -0700 Subject: [PATCH 05/11] add `esModuleInterop` option --- rollup/npmHelpers.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/rollup/npmHelpers.js b/rollup/npmHelpers.js index faf1ae6b0744..b4397a56f466 100644 --- a/rollup/npmHelpers.js +++ b/rollup/npmHelpers.js @@ -12,7 +12,12 @@ import { makeNodeResolvePlugin, makeSucrasePlugin } from './plugins/index.js'; const packageDotJSON = require(path.resolve(process.cwd(), './package.json')); export function makeBaseNPMConfig(options = {}) { - const { entrypoints = ['src/index.ts'], externals: packageSpecificExternals = [], hasBundles = false } = options; + const { + entrypoints = ['src/index.ts'], + esModuleInterop = false, + externals: packageSpecificExternals = [], + hasBundles = false, + } = options; const nodeResolvePlugin = makeNodeResolvePlugin(); const sucrasePlugin = makeSucrasePlugin(); @@ -43,6 +48,17 @@ export function makeBaseNPMConfig(options = {}) { // get: () => are.great, // }); externalLiveBindings: false, + + // Equivalent to `esModuleInterop` in tsconfig. + // Controls whether rollup emits helpers to handle special cases where turning + // `import * as dogs from 'dogs'` + // into + // `const dogs = require('dogs')` + // doesn't work. + // + // `auto` -> emit helpers + // `esModule` -> don't emit helpers + interop: esModuleInterop ? 'auto' : 'esModule', }, plugins: [nodeResolvePlugin, sucrasePlugin], From ac9d6f46cd4bc59a1039af1ffe811737537463b4 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Thu, 31 Mar 2022 22:46:06 -0700 Subject: [PATCH 06/11] add `build:rollup` command to all packages --- package.json | 1 + packages/browser/package.json | 1 + packages/core/package.json | 1 + packages/gatsby/package.json | 1 + packages/hub/package.json | 1 + packages/integrations/package.json | 1 + packages/nextjs/package.json | 1 + packages/node/package.json | 1 + packages/react/package.json | 1 + packages/serverless/package.json | 1 + packages/tracing/package.json | 1 + packages/types/package.json | 1 + packages/utils/package.json | 1 + packages/vue/package.json | 1 + packages/wasm/package.json | 1 + 15 files changed, 15 insertions(+) diff --git a/package.json b/package.json index 7e1ce332ac3f..e3cccf304ea0 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build:dev:filter": "lerna run --stream --concurrency 1 --sort build:dev --include-filtered-dependencies --include-filtered-dependents --scope", "build:es5": "yarn lerna run --stream --concurrency 1 --sort build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "lerna run --stream --concurrency 1 --sort build:esm", + "build:rollup": "lerna run --stream --concurrency 1 --sort build:rollup", "build:types": "lerna run --stream --concurrency 1 --sort build:types", "build:watch": "lerna run --parallel build:watch", "build:dev:watch": "lerna run --parallel build:dev:watch", diff --git a/packages/browser/package.json b/packages/browser/package.json index 8f9eb0013e26..326feccd3c06 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -49,6 +49,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", diff --git a/packages/core/package.json b/packages/core/package.json index 737007cf648b..bc81918f418f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,6 +27,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index e65aa2714b27..6058bfba7a39 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -40,6 +40,7 @@ "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", "build:plugin": "tsc -p tsconfig.plugin.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/hub/package.json b/packages/hub/package.json index 13351981746c..e5f1260761a1 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -26,6 +26,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/integrations/package.json b/packages/integrations/package.json index de3eb70ed7bd..d6e6db7ccd7a 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -31,6 +31,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index dd232c23d374..2874bc0cfbec 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -48,6 +48,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/node/package.json b/packages/node/package.json index cbb1e4e2f7b0..82e190d76d64 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -39,6 +39,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/react/package.json b/packages/react/package.json index 0365a6968bc5..d00a54e15dd6 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -52,6 +52,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/serverless/package.json b/packages/serverless/package.json index c7a83cfdaa20..df5dadaa9ded 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -44,6 +44,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 00a298e3937f..f3b3fa7514b1 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -32,6 +32,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", diff --git a/packages/types/package.json b/packages/types/package.json index 5c1c37c1c159..30d22f51b906 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -21,6 +21,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/utils/package.json b/packages/utils/package.json index 142ae23e6010..18b5a4499406 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -28,6 +28,7 @@ "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", diff --git a/packages/vue/package.json b/packages/vue/package.json index 406f335f05de..fc757c733d85 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -32,6 +32,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 671ddad9c5f2..23bd3c4242c3 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -35,6 +35,7 @@ "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", + "build:rollup": "rollup -c rollup.npm.config.js", "build:types": "tsc -p tsconfig.types.json", "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", From 36ffbb67ea8951e8414d44d0c7a9cddce7c634e0 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Mon, 4 Apr 2022 23:15:56 -0700 Subject: [PATCH 07/11] add `build:rollup:watch` command to all packages --- packages/browser/package.json | 1 + packages/core/package.json | 1 + packages/gatsby/package.json | 1 + packages/hub/package.json | 1 + packages/integrations/package.json | 1 + packages/nextjs/package.json | 1 + packages/node/package.json | 1 + packages/react/package.json | 1 + packages/serverless/package.json | 1 + packages/tracing/package.json | 1 + packages/types/package.json | 1 + packages/utils/package.json | 1 + packages/vue/package.json | 1 + packages/wasm/package.json | 1 + 14 files changed, 14 insertions(+) diff --git a/packages/browser/package.json b/packages/browser/package.json index 326feccd3c06..2263eff402cc 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -57,6 +57,7 @@ "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:dev:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/core/package.json b/packages/core/package.json index bc81918f418f..a66c34b5035f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -34,6 +34,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 6058bfba7a39..5fc7e5e08402 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -47,6 +47,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/hub/package.json b/packages/hub/package.json index e5f1260761a1..66cca210583a 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -33,6 +33,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/integrations/package.json b/packages/integrations/package.json index d6e6db7ccd7a..e7097f2c486c 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -38,6 +38,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 2874bc0cfbec..07529b57ba03 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -55,6 +55,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.client.ts && madge --circular --exclude 'config/types\\.ts' src/index.server.ts # see https://github.com/pahen/madge/issues/306", diff --git a/packages/node/package.json b/packages/node/package.json index 82e190d76d64..f67eace899d3 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -46,6 +46,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/react/package.json b/packages/react/package.json index d00a54e15dd6..67a29a291385 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -59,6 +59,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/serverless/package.json b/packages/serverless/package.json index df5dadaa9ded..97c20654f559 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -51,6 +51,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/tracing/package.json b/packages/tracing/package.json index f3b3fa7514b1..1cfa4aa2dafe 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -40,6 +40,7 @@ "build:dev:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm", "clean": "rimraf build coverage", diff --git a/packages/types/package.json b/packages/types/package.json index 30d22f51b906..9799b8aa4fcf 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -28,6 +28,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "clean": "rimraf build", diff --git a/packages/utils/package.json b/packages/utils/package.json index 18b5a4499406..1e84b03ca42d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -35,6 +35,7 @@ "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/vue/package.json b/packages/vue/package.json index fc757c733d85..66af3d30fc92 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -40,6 +40,7 @@ "build:dev:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts && npm pack ./build", "circularDepCheck": "madge --circular src/index.ts", diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 23bd3c4242c3..e34b788aceef 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -43,6 +43,7 @@ "build:dev:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:rollup:watch": "rollup -c rollup.npm.config.js --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:npm": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm", "circularDepCheck": "madge --circular src/index.ts", From f958f065f47f350f730e7dd944d92fbe104ac582 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Thu, 31 Mar 2022 17:21:01 -0700 Subject: [PATCH 08/11] add boilerplate rollup config for npm builds to every package --- packages/browser/rollup.npm.config.js | 3 +++ packages/core/rollup.npm.config.js | 3 +++ packages/gatsby/rollup.npm.config.js | 3 +++ packages/hub/rollup.npm.config.js | 3 +++ packages/integrations/rollup.npm.config.js | 3 +++ packages/nextjs/rollup.npm.config.js | 3 +++ packages/node/rollup.npm.config.js | 3 +++ packages/react/rollup.npm.config.js | 3 +++ packages/serverless/rollup.npm.config.js | 3 +++ packages/tracing/rollup.npm.config.js | 3 +++ packages/types/rollup.npm.config.js | 3 +++ packages/utils/rollup.npm.config.js | 3 +++ packages/vue/rollup.npm.config.js | 3 +++ packages/wasm/rollup.npm.config.js | 3 +++ 14 files changed, 42 insertions(+) create mode 100644 packages/browser/rollup.npm.config.js create mode 100644 packages/core/rollup.npm.config.js create mode 100644 packages/gatsby/rollup.npm.config.js create mode 100644 packages/hub/rollup.npm.config.js create mode 100644 packages/integrations/rollup.npm.config.js create mode 100644 packages/nextjs/rollup.npm.config.js create mode 100644 packages/node/rollup.npm.config.js create mode 100644 packages/react/rollup.npm.config.js create mode 100644 packages/serverless/rollup.npm.config.js create mode 100644 packages/tracing/rollup.npm.config.js create mode 100644 packages/types/rollup.npm.config.js create mode 100644 packages/utils/rollup.npm.config.js create mode 100644 packages/vue/rollup.npm.config.js create mode 100644 packages/wasm/rollup.npm.config.js diff --git a/packages/browser/rollup.npm.config.js b/packages/browser/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/browser/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/core/rollup.npm.config.js b/packages/core/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/core/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/gatsby/rollup.npm.config.js b/packages/gatsby/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/gatsby/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/hub/rollup.npm.config.js b/packages/hub/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/hub/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/integrations/rollup.npm.config.js b/packages/integrations/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/integrations/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/nextjs/rollup.npm.config.js b/packages/nextjs/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/nextjs/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/node/rollup.npm.config.js b/packages/node/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/node/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/react/rollup.npm.config.js b/packages/react/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/react/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/serverless/rollup.npm.config.js b/packages/serverless/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/serverless/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/tracing/rollup.npm.config.js b/packages/tracing/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/tracing/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/types/rollup.npm.config.js b/packages/types/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/types/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/utils/rollup.npm.config.js b/packages/utils/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/utils/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/vue/rollup.npm.config.js b/packages/vue/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/vue/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/wasm/rollup.npm.config.js b/packages/wasm/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/wasm/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); From 3220152411c607ae3e226505fcd41abc2cf58dab Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 26 Apr 2022 21:41:36 -0700 Subject: [PATCH 09/11] fix packages with bundles --- packages/browser/rollup.npm.config.js | 7 ++++++- packages/integrations/rollup.npm.config.js | 7 ++++++- packages/tracing/rollup.npm.config.js | 7 ++++++- packages/wasm/rollup.npm.config.js | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/browser/rollup.npm.config.js b/packages/browser/rollup.npm.config.js index 5a62b528ef44..4ffa8b9396d8 100644 --- a/packages/browser/rollup.npm.config.js +++ b/packages/browser/rollup.npm.config.js @@ -1,3 +1,8 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + // packages with bundles have a different build directory structure + hasBundles: true, + }), +); diff --git a/packages/integrations/rollup.npm.config.js b/packages/integrations/rollup.npm.config.js index 5a62b528ef44..4ffa8b9396d8 100644 --- a/packages/integrations/rollup.npm.config.js +++ b/packages/integrations/rollup.npm.config.js @@ -1,3 +1,8 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + // packages with bundles have a different build directory structure + hasBundles: true, + }), +); diff --git a/packages/tracing/rollup.npm.config.js b/packages/tracing/rollup.npm.config.js index 5a62b528ef44..4ffa8b9396d8 100644 --- a/packages/tracing/rollup.npm.config.js +++ b/packages/tracing/rollup.npm.config.js @@ -1,3 +1,8 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + // packages with bundles have a different build directory structure + hasBundles: true, + }), +); diff --git a/packages/wasm/rollup.npm.config.js b/packages/wasm/rollup.npm.config.js index 5a62b528ef44..4ffa8b9396d8 100644 --- a/packages/wasm/rollup.npm.config.js +++ b/packages/wasm/rollup.npm.config.js @@ -1,3 +1,8 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + // packages with bundles have a different build directory structure + hasBundles: true, + }), +); From 335d44f95d21e05574e1645a5a3672bdfbef2640 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 26 Apr 2022 17:26:19 -0700 Subject: [PATCH 10/11] fix nextjs, react, and serverless config --- packages/nextjs/rollup.npm.config.js | 11 ++++++++++- packages/react/rollup.npm.config.js | 6 +++++- packages/serverless/rollup.npm.config.js | 6 +++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/nextjs/rollup.npm.config.js b/packages/nextjs/rollup.npm.config.js index 5a62b528ef44..a41fb991432c 100644 --- a/packages/nextjs/rollup.npm.config.js +++ b/packages/nextjs/rollup.npm.config.js @@ -1,3 +1,12 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + // We need to include `instrumentServer.ts` separately because it's only conditionally required, and so rollup + // doesn't automatically include it when calculating the module dependency tree. + entrypoints: ['src/index.server.ts', 'src/index.client.ts', 'src/utils/instrumentServer.ts'], + // prevent this nextjs code from ending up in our built package (this doesn't happen automatially because the name + // doesn't match an SDK dependency) + externals: ['next/router'], + }), +); diff --git a/packages/react/rollup.npm.config.js b/packages/react/rollup.npm.config.js index 5a62b528ef44..ebe81bb263c6 100644 --- a/packages/react/rollup.npm.config.js +++ b/packages/react/rollup.npm.config.js @@ -1,3 +1,7 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + esModuleInterop: true, + }), +); diff --git a/packages/serverless/rollup.npm.config.js b/packages/serverless/rollup.npm.config.js index 5a62b528ef44..9b3074be8002 100644 --- a/packages/serverless/rollup.npm.config.js +++ b/packages/serverless/rollup.npm.config.js @@ -1,3 +1,7 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + entrypoints: ['src/index.ts', 'src/awslambda-auto.ts'], + }), +); From bbb3a8fcc4219f7b03a364b1d724d797b08bd9fa Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Wed, 27 Apr 2022 15:07:01 -0700 Subject: [PATCH 11/11] add tests against sucrase build --- .github/workflows/build.yml | 305 ++++++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 155126752160..577de41be06d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,6 +105,45 @@ jobs: # `job_build` can't see `job_install_deps` and what it returned) dependency_cache_key: ${{ needs.job_install_deps.outputs.dependency_cache_key }} + # This isn't a full `yarn build` using sucrase - it's just the cache from the normal build, with `build/cjs` and + # `build/esm` overwritten by sucrase. This way we don't need to worry about all of the other random stuff which + # packages build, because it will already be there. + job_build_with_sucrase: + name: Sucrase Build + needs: [job_install_deps, job_build] + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_install_deps.outputs.dependency_cache_key }} + - name: Check tsc build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }} + - name: Check sucrase build cache + uses: actions/cache@v2 + id: cache_built_sucrase_packages + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Build packages with sucrase + if: steps.cache_built_sucrase_packages.outputs.cache-hit == '' + run: 'yarn build:rollup' + outputs: + # this needs to be passed on, because the `needs` context only looks at direct ancestors (so steps which depend on + # `job_build` can't see `job_install_deps` and what it returned) + dependency_cache_key: ${{ needs.job_install_deps.outputs.dependency_cache_key }} + job_size_check: name: Size Check needs: job_build @@ -492,3 +531,269 @@ jobs: run: | cd packages/node-integration-tests yarn test + + job_unit_test_sucrase: + name: Sucrase Test (Node ${{ matrix.node }}) + needs: job_build_with_sucrase + continue-on-error: true + timeout-minutes: 30 + runs-on: ubuntu-latest + strategy: + matrix: + node: [8, 10, 12, 14, 16] + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run tests + env: + NODE_VERSION: ${{ matrix.node }} + run: | + [[ $NODE_VERSION == 8 ]] && yarn add --dev --ignore-engines --ignore-scripts --ignore-workspace-root-check ts-node@8.x + yarn test-ci + - name: Compute test coverage + uses: codecov/codecov-action@v1 + + job_nextjs_integration_test_sucrase: + name: Sucrase Test @sentry/nextjs on (Node ${{ matrix.node }}) + needs: job_build_with_sucrase + continue-on-error: true + timeout-minutes: 30 + runs-on: ubuntu-latest + strategy: + matrix: + node: [10, 12, 14, 16] + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run tests + env: + NODE_VERSION: ${{ matrix.node }} + run: | + cd packages/nextjs + yarn test:integration + + # Ember tests are separate from the rest because they are the slowest part of the test suite, and making them a + # separate job allows them to run in parallel with the other tests. + job_ember_tests_sucrase: + name: Sucrase Test @sentry/ember + needs: job_build_with_sucrase + continue-on-error: true + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + # TODO: removing `fetch-depth` below seems to have no effect, and the commit which added it had no description, + # so it's not clear why it's necessary. That said, right now ember tests are xfail, so it's a little hard to + # tell if it's safe to remove. Once ember tests are fixed, let's try again with it turned off, and if all goes + # well, we can pull it out. + fetch-depth: 0 + - name: Set up Node + uses: actions/setup-node@v1 + with: + # The only danger with Ember in terms of Node versions is that the build tool, ember-cli, won't work if Node + # is too old. Since Oct 2019, Node 10 has been the oldest version supported by ember-cli, so test against + # that. If it passes, newer versions of Node should also be fine. This saves us from having to run the Ember + # tests in our Node matrix above. + node-version: '10' + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run Ember tests + run: yarn test --scope=@sentry/ember + - name: Compute test coverage + uses: codecov/codecov-action@v1 + + job_browser_playwright_tests_sucrase: + name: Sucrase Playwright - ${{ (matrix.tracing_only && 'Browser + Tracing') || 'Browser' }} (${{ matrix.bundle }}) + needs: job_build_with_sucrase + runs-on: ubuntu-latest + strategy: + matrix: + bundle: + - esm + - cjs + tracing_only: + - true + - false + exclude: + # `tracing_only` only makes a difference for bundles - tests of the esm and cjs builds always include the + # tracing tests + - bundle: esm + tracing_only: false + - bundle: cjs + tracing_only: false + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run Playwright tests + env: + PW_BUNDLE: ${{ matrix.bundle }} + PW_TRACING_ONLY: ${{ matrix.tracing_only }} + run: | + cd packages/integration-tests + yarn run playwright install-deps webkit + yarn test:ci + + job_browser_integration_tests_sucrase: + name: Sucrase Old Browser Integration Tests (${{ matrix.browser }}) + needs: job_build_with_sucrase + runs-on: ubuntu-latest + timeout-minutes: 10 + continue-on-error: true + strategy: + matrix: + browser: + - ChromeHeadless + - FirefoxHeadless + - WebkitHeadless + steps: + - name: Check out current commit (${{ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run integration tests + env: + KARMA_BROWSER: ${{ matrix.browser }} + run: | + cd packages/browser + [[ $KARMA_BROWSER == WebkitHeadless ]] && yarn run playwright install-deps webkit + yarn test:integration + + job_browser_build_tests_sucrase: + name: Sucrase Browser Build Tests + needs: job_build_with_sucrase + runs-on: ubuntu-latest + timeout-minutes: 5 + continue-on-error: true + steps: + - name: Check out current commit (${ env.HEAD_COMMIT }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run browser build tests + run: | + cd packages/browser + yarn test:package + - name: Run utils build tests + run: | + cd packages/utils + yarn test:package + + job_node_integration_tests_sucrase: + name: Sucrase Node SDK Integration Tests (${{ matrix.node }}) + needs: job_build_with_sucrase + runs-on: ubuntu-latest + timeout-minutes: 10 + continue-on-error: true + strategy: + matrix: + node: [10, 12, 14, 16] + steps: + - name: Check out current commit (${{ github.sha }}) + uses: actions/checkout@v2 + with: + ref: ${{ env.HEAD_COMMIT }} + - name: Set up Node + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + - name: Check dependency cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_DEPENDENCY_PATHS }} + key: ${{ needs.job_build_with_sucrase.outputs.dependency_cache_key }} + - name: Check build cache + uses: actions/cache@v2 + with: + path: ${{ env.CACHED_BUILD_PATHS }} + key: ${{ env.BUILD_CACHE_KEY }}-sucrase + - name: Run integration tests + env: + NODE_VERSION: ${{ matrix.node }} + run: | + cd packages/node-integration-tests + yarn test