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..d937af1a2 --- /dev/null +++ b/packages/babel-plugin-remove-export-keywords/package.json @@ -0,0 +1,32 @@ +{ + "name": "@mdx-js/babel-plugin-remove-export-keywords", + "version": "1.0.0", + "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)", + "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..8ac64396c --- /dev/null +++ b/packages/babel-plugin-remove-export-keywords/test/index.test.js @@ -0,0 +1,34 @@ +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) + }) +})