From 2d47a81fd4fa0540d2845e1ee739019313e01a8b Mon Sep 17 00:00:00 2001 From: John Letey <30328854+johnletey@users.noreply.github.com> Date: Wed, 31 Jul 2019 18:51:57 +0100 Subject: [PATCH 1/3] feat: Add `babel-plugin-remove-export-keywords` --- .../babel-plugin-remove-export-keywords/index.js | 14 ++++++++++++++ .../package.json | 8 ++++++++ 2 files changed, 22 insertions(+) create mode 100644 packages/babel-plugin-remove-export-keywords/index.js create mode 100644 packages/babel-plugin-remove-export-keywords/package.json diff --git a/packages/babel-plugin-remove-export-keywords/index.js b/packages/babel-plugin-remove-export-keywords/index.js new file mode 100644 index 000000000..aa76b9ab4 --- /dev/null +++ b/packages/babel-plugin-remove-export-keywords/index.js @@ -0,0 +1,14 @@ +module.exports = function removeExportKeywords() { + return { + visitor: { + ExportNamedDeclaration(path) { + const declaration = path.node.declaration; + + // Ignore "export { Foo as default }" syntax + if (declaration) { + path.replaceWith(declaration); + } + } + } + }; +}; \ No newline at end of file diff --git a/packages/babel-plugin-remove-export-keywords/package.json b/packages/babel-plugin-remove-export-keywords/package.json new file mode 100644 index 000000000..8402e4714 --- /dev/null +++ b/packages/babel-plugin-remove-export-keywords/package.json @@ -0,0 +1,8 @@ +{ + "name": "babel-plugin-remove-export-keywords", + "version": "1.0.0", + "main": "index.js", + "repository": "https://github.com/mdx-js/mdx", + "author": "John Otander (http://johnotander.com)", + "license": "MIT" +} From c597f9411a613a5b482821fe650a0d11083320f2 Mon Sep 17 00:00:00 2001 From: John Letey <30328854+johnletey@users.noreply.github.com> Date: Wed, 31 Jul 2019 19:23:57 +0100 Subject: [PATCH 2/3] refactor: Add test and update package.json --- .../package.json | 32 ++++++++++++++++--- .../test/index.test.js | 31 ++++++++++++++++++ 2 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 packages/babel-plugin-remove-export-keywords/test/index.test.js diff --git a/packages/babel-plugin-remove-export-keywords/package.json b/packages/babel-plugin-remove-export-keywords/package.json index 8402e4714..d937af1a2 100644 --- a/packages/babel-plugin-remove-export-keywords/package.json +++ b/packages/babel-plugin-remove-export-keywords/package.json @@ -1,8 +1,32 @@ { - "name": "babel-plugin-remove-export-keywords", + "name": "@mdx-js/babel-plugin-remove-export-keywords", "version": "1.0.0", - "main": "index.js", - "repository": "https://github.com/mdx-js/mdx", + "description": "Remove plugin export keywords", + "license": "MIT", + "keywords": [ + "mdx", + "markdown", + "react", + "jsx", + "remark", + "babel" + ], + "homepage": "https://mdxjs.com", + "repository": "mdx-js/mdx", + "bugs": "https://github.com/mdx-js/mdx/issues", "author": "John Otander (http://johnotander.com)", - "license": "MIT" + "files": [ + "index.js" + ], + "devDependencies": { + "@babel/core": "7.5.5", + "@babel/preset-react": "^7.0.0", + "jest": "24.8.0" + }, + "scripts": { + "test": "jest" + }, + "jest": { + "testEnvironment": "node" + } } diff --git a/packages/babel-plugin-remove-export-keywords/test/index.test.js b/packages/babel-plugin-remove-export-keywords/test/index.test.js new file mode 100644 index 000000000..9494aed12 --- /dev/null +++ b/packages/babel-plugin-remove-export-keywords/test/index.test.js @@ -0,0 +1,31 @@ +const babel = require('@babel/core') + +const plugin = require('..') + +const testContents = ` +export const foo = 'bar'; +/** @jsx mdx*/ export const _frontmatter = { + title: "Here's a title with the word export" +}; +const MDXContent = function () {}; +export { MDXContent as default }; +` +const expectedResults = `const foo = 'bar'; +/** @jsx mdx*/ +const _frontmatter = { + title: "Here's a title with the word export" +}; +const MDXContent = function () {}; +export { MDXContent as default };` + +describe('babel-plugin-remove-export-keywords', () => { + test('removes all export keywords', () => { + const result = babel.transform(testContents, { + configFile: false, + plugins: [plugin], + presets: [require('@babel/preset-react')] + }) + + expect(result.code).toEqual(expectedResults) + }) +}) From 62af763874044fea5aca0b179aa655eb35fd231e Mon Sep 17 00:00:00 2001 From: John Letey <30328854+johnletey@users.noreply.github.com> Date: Wed, 31 Jul 2019 19:29:29 +0100 Subject: [PATCH 3/3] refactor: Update test so that it passes --- .../babel-plugin-remove-export-keywords/test/index.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/babel-plugin-remove-export-keywords/test/index.test.js b/packages/babel-plugin-remove-export-keywords/test/index.test.js index 9494aed12..8ac64396c 100644 --- a/packages/babel-plugin-remove-export-keywords/test/index.test.js +++ b/packages/babel-plugin-remove-export-keywords/test/index.test.js @@ -12,10 +12,13 @@ export { MDXContent as default }; ` const expectedResults = `const foo = 'bar'; /** @jsx mdx*/ + const _frontmatter = { title: "Here's a title with the word export" }; + const MDXContent = function () {}; + export { MDXContent as default };` describe('babel-plugin-remove-export-keywords', () => {