From 60ec14215763478f3df477d27cdf0e9d19fbaf1c Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Wed, 22 Apr 2020 00:35:23 +0200 Subject: [PATCH 1/3] add script to remove empty imports/requires --- packages/core/package.json | 1 + packages/core/scripts/remove-empty-imports.js | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 packages/core/scripts/remove-empty-imports.js diff --git a/packages/core/package.json b/packages/core/package.json index 22bebff6e1..e3fbea365f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -48,6 +48,7 @@ "check": "tsc --noEmit", "lint": "eslint --ext=js,jsx,ts,tsx .", "build": "rollup -c ../../scripts/rollup/config.js", + "postbuild": "node ./scripts/remove-empty-imports.js", "prepare": "../../scripts/prepare/index.js", "prepublishOnly": "run-s clean build" }, diff --git a/packages/core/scripts/remove-empty-imports.js b/packages/core/scripts/remove-empty-imports.js new file mode 100644 index 0000000000..74c67c939b --- /dev/null +++ b/packages/core/scripts/remove-empty-imports.js @@ -0,0 +1,50 @@ +const { transformSync: transform } = require('@babel/core'); +const fs = require('fs'); + +const nonMinified = [ + `${process.cwd()}/dist/urql-core.js`, + `${process.cwd()}/dist/urql-core.mjs`, + `${process.cwd()}/dist/urql-core-internal.js`, + `${process.cwd()}/dist/urql-core-internal.mjs`, +]; + +const minified = [ + `${process.cwd()}/dist/urql-core.min.js`, + `${process.cwd()}/dist/urql-core.min.mjs`, + `${process.cwd()}/dist/urql-core-internal.min.js`, + `${process.cwd()}/dist/urql-core-internal.min.mjs`, +]; + +const removeEmptyImports = (babel) => { + const { types: t } = babel; + + return { + visitor: { + ImportDeclaration(path) { + const { specifiers } = path.node + if (specifiers.length === 0) { + path.remove(); + } + }, + CallExpression(path) { + if ( + t.isIdentifier(path.node.callee) && + path.node.callee.name === 'require' && + path.parent.type !== 'VariableDeclarator' + ) { + path.remove(); + } + } + } + }; +} + +nonMinified.forEach(loc => { + const { code: newCode } = transform(fs.readFileSync(loc), { plugins: [removeEmptyImports], babelrc: false }); + fs.writeFileSync(loc, newCode); +}); + +minified.forEach(loc => { + const { code: newCode } = transform(fs.readFileSync(loc), { plugins: [removeEmptyImports], babelrc: false, minified: true }); + fs.writeFileSync(loc, newCode); +}); From 5d3da32e69e7259087d1a2ac6a6b0d46199f62c3 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Wed, 22 Apr 2020 00:36:54 +0200 Subject: [PATCH 2/3] add changeset --- .changeset/strong-radios-judge.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strong-radios-judge.md diff --git a/.changeset/strong-radios-judge.md b/.changeset/strong-radios-judge.md new file mode 100644 index 0000000000..5103c81ac1 --- /dev/null +++ b/.changeset/strong-radios-judge.md @@ -0,0 +1,5 @@ +--- +'@urql/core': patch +--- + +Add a babel-plugin that removes empty imports from the final build output. From 3a4e3533121765b87839f9ee8666582071f4e377 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Wed, 22 Apr 2020 00:58:46 +0200 Subject: [PATCH 3/3] remove the minified entries because of CI --- packages/core/scripts/remove-empty-imports.js | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/packages/core/scripts/remove-empty-imports.js b/packages/core/scripts/remove-empty-imports.js index 74c67c939b..38e1ce94b8 100644 --- a/packages/core/scripts/remove-empty-imports.js +++ b/packages/core/scripts/remove-empty-imports.js @@ -8,13 +8,6 @@ const nonMinified = [ `${process.cwd()}/dist/urql-core-internal.mjs`, ]; -const minified = [ - `${process.cwd()}/dist/urql-core.min.js`, - `${process.cwd()}/dist/urql-core.min.mjs`, - `${process.cwd()}/dist/urql-core-internal.min.js`, - `${process.cwd()}/dist/urql-core-internal.min.mjs`, -]; - const removeEmptyImports = (babel) => { const { types: t } = babel; @@ -43,8 +36,3 @@ nonMinified.forEach(loc => { const { code: newCode } = transform(fs.readFileSync(loc), { plugins: [removeEmptyImports], babelrc: false }); fs.writeFileSync(loc, newCode); }); - -minified.forEach(loc => { - const { code: newCode } = transform(fs.readFileSync(loc), { plugins: [removeEmptyImports], babelrc: false, minified: true }); - fs.writeFileSync(loc, newCode); -});