babel-plugin-transform-replace-export-default
Advanced tools
| import { PluginObj, PluginPass } from '@babel/core'; | ||
| export declare type Options = { | ||
| removeExportDefault?: boolean; | ||
| }; | ||
| export default function defaultExportReplace(): PluginObj<PluginPass>; |
+34
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| function defaultExportReplace() { | ||
| return { | ||
| name: 'transform-replace-export-default', | ||
| visitor: { | ||
| ExportDefaultDeclaration(path, state) { | ||
| const declaration = path.node.declaration; | ||
| const { removeExportDefault } = state.opts; | ||
| if (removeExportDefault) { | ||
| declaration.type === 'Identifier' ? path.remove() : path.replaceWith(declaration); | ||
| return; | ||
| } | ||
| if (declaration.type === 'ClassDeclaration' || declaration.type === 'FunctionDeclaration') { | ||
| // @ts-ignore | ||
| path.node.type = 'ReturnStatement'; | ||
| // @ts-ignore | ||
| path.node.argument = declaration; | ||
| path.replaceWith(path.node); | ||
| } | ||
| else if (declaration.type === 'Identifier') { | ||
| // declaration.name = `return ${declaration.name}`; | ||
| // @ts-ignore | ||
| path.node.type = 'ReturnStatement'; | ||
| // @ts-ignore | ||
| path.node.argument = declaration; | ||
| path.replaceWith(path.node); | ||
| } | ||
| }, | ||
| }, | ||
| }; | ||
| } | ||
| exports.default = defaultExportReplace; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAMA,SAAwB,oBAAoB;IAC1C,OAAO;QACL,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE;YACP,wBAAwB,CAAC,IAAI,EAAE,KAAK;gBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC1C,MAAM,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,IAAe,CAAC;gBACtD,IAAI,mBAAmB,EAAE;oBACvB,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAClF,OAAO;iBACR;gBAED,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE;oBACzF,aAAa;oBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;oBACnC,aAAa;oBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7B;qBAAM,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC5C,mDAAmD;oBACnD,aAAa;oBACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;oBACnC,aAAa;oBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC7B;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AA7BD,uCA6BC"} |
+5
-1
| { | ||
| "name": "babel-plugin-transform-replace-export-default", | ||
| "version": "1.0.2", | ||
| "version": "1.0.3", | ||
| "description": "Replace `export default` with `return`, or just remove `export default`.", | ||
@@ -20,2 +20,6 @@ "homepage": "https://kktjs.github.io/babel-plugin-transform-replace-export-default", | ||
| }, | ||
| "files": [ | ||
| "lib", | ||
| "src" | ||
| ], | ||
| "keywords": [ | ||
@@ -22,0 +26,0 @@ "babel", |
| name: CI | ||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
| jobs: | ||
| Build_Deploy: | ||
| runs-on: ubuntu-18.04 | ||
| steps: | ||
| - uses: actions/checkout@v2 | ||
| - uses: actions/setup-node@v2 | ||
| with: | ||
| node-version: 14 | ||
| - run: npm install | ||
| - run: npm run build | ||
| - run: npm run doc | ||
| - run: npm run coverage | ||
| - name: Create Coverage Badges | ||
| uses: jaywcjlove/coverage-badges-cli@main | ||
| - run: cp -rp coverage dist | ||
| - name: Generate Contributors Images | ||
| uses: jaywcjlove/github-action-contributors@main | ||
| with: | ||
| filter-author: (renovate\[bot\]|renovate-bot|dependabot\[bot\]) | ||
| output: dist/CONTRIBUTORS.svg | ||
| avatarSize: 42 | ||
| - name: Create Tag | ||
| id: create_tag | ||
| uses: jaywcjlove/create-tag-action@v1.3.6 | ||
| with: | ||
| package-path: ./package.json | ||
| - name: get tag version | ||
| id: tag_version | ||
| uses: jaywcjlove/changelog-generator@v1.5.3 | ||
| - name: Deploy Website | ||
| uses: peaceiris/actions-gh-pages@v3 | ||
| with: | ||
| user_name: 'github-actions[bot]' | ||
| user_email: 'github-actions[bot]@users.noreply.github.com' | ||
| commit_message: ${{steps.tag_version.outputs.tag}} ${{ github.event.head_commit.message }} | ||
| github_token: ${{ secrets.GITHUB_TOKEN }} | ||
| publish_dir: ./dist | ||
| - name: Generate Changelog | ||
| id: changelog | ||
| uses: jaywcjlove/changelog-generator@v1.5.3 | ||
| with: | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||
| filter-author: (jaywcjlove|小弟调调™|dependabot\[bot\]|Renovate Bot) | ||
| filter: (^[\s]+?[R|r]elease)|(^[R|r]elease) | ||
| - name: Create Release | ||
| uses: ncipollo/release-action@v1 | ||
| if: steps.create_tag.outputs.successful | ||
| with: | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||
| name: ${{ steps.create_tag.outputs.version }} | ||
| tag: ${{ steps.create_tag.outputs.version }} | ||
| body: | | ||
| [](https://kktjs.github.io/npm-unpkg/#/pkg/babel-plugin-transform-replace-export-default@${{steps.changelog.outputs.version}}/file/README.md) [](https://www.npmjs.com/package/babel-plugin-transform-replace-export-default) | ||
| Documentation ${{ steps.changelog.outputs.tag }}: https://raw.githack.com/kktjs/babel-plugin-transform-replace-export-default/${{ steps.changelog.outputs.gh-pages-short-hash }}/index.html | ||
| Comparing Changes: ${{ steps.changelog.outputs.compareurl }} | ||
| ```bash | ||
| npm i babel-plugin-transform-replace-export-default@${{steps.changelog.outputs.version}} | ||
| ``` | ||
| ${{ steps.changelog.outputs.changelog }} | ||
| - uses: JS-DevTools/npm-publish@v1 | ||
| with: | ||
| token: ${{ secrets.NPM_TOKEN }} | ||
| package: ./package.json |
| { | ||
| "extends": ["config:base"], | ||
| "packageRules": [ | ||
| { | ||
| "matchPackagePatterns": ["*"], | ||
| "rangeStrategy": "replace" | ||
| } | ||
| ] | ||
| } |
| import { transformSync } from '@babel/core'; | ||
| import plugin from '../src'; | ||
| const defaultBabelOptions = { | ||
| presets: [], | ||
| plugins: [plugin], | ||
| }; | ||
| test(`Case const`, () => { | ||
| const babelOptions = { ...defaultBabelOptions }; | ||
| const source = `const demo = 0;\n export default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `const demo = 0;\nreturn demo;`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case function`, () => { | ||
| const babelOptions = { ...defaultBabelOptions }; | ||
| const source = `function demo() {};export default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `function demo() {}\n\n;\nreturn demo;`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case class`, () => { | ||
| const babelOptions = { ...defaultBabelOptions }; | ||
| const source = `class demo { constructor() { } };export default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `class demo {\n constructor() {}\n\n}\n\n;\nreturn demo;`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case 02`, () => { | ||
| const babelOptions = { ...defaultBabelOptions }; | ||
| const source = `export default function demo() {}`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `return function demo() {};`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case 03`, () => { | ||
| const babelOptions = { ...defaultBabelOptions }; | ||
| const source = `export default class demo { }`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `return class demo {};`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case options remove export default 01`, () => { | ||
| const babelOptions = { | ||
| ...defaultBabelOptions, plugins: [[plugin, { | ||
| removeExportDefault: true, | ||
| }]] | ||
| }; | ||
| const source = `export default class demo { }`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `class demo {}`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case options remove export default 02`, () => { | ||
| const babelOptions = { | ||
| ...defaultBabelOptions, plugins: [ | ||
| [plugin, { removeExportDefault: true }] | ||
| ] | ||
| }; | ||
| const source = `export default function demo() {}`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `function demo() {}`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case options remove export default 03`, () => { | ||
| const babelOptions = { | ||
| ...defaultBabelOptions, plugins: [ | ||
| [plugin, { removeExportDefault: true }] | ||
| ] | ||
| }; | ||
| const source = `class demo {}\nexport default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `class demo {}`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case options remove export default 04`, () => { | ||
| const babelOptions = { | ||
| ...defaultBabelOptions, plugins: [ | ||
| [plugin, { removeExportDefault: true }] | ||
| ] | ||
| }; | ||
| const source = `function demo() {}\nexport default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `function demo() {}`; | ||
| expect(code).toBe(expected); | ||
| }); | ||
| test(`Case options remove export default 05`, () => { | ||
| const babelOptions = { | ||
| ...defaultBabelOptions, plugins: [ | ||
| [plugin, { removeExportDefault: true }] | ||
| ] | ||
| }; | ||
| const source = `const demo = 0;\n export default demo;`; | ||
| const { code } = transformSync(source, babelOptions); | ||
| const expected = `const demo = 0;`; | ||
| expect(code).toBe(expected); | ||
| }); |
| { | ||
| "$schema": "http://json.schemastore.org/tsconfig", | ||
| "compilerOptions": { | ||
| "module": "commonjs", | ||
| "esModuleInterop": true, | ||
| "declaration": true, | ||
| "target": "es2017", | ||
| "noImplicitAny": true, | ||
| "resolveJsonModule": true, | ||
| "moduleResolution": "node", | ||
| "emitDecoratorMetadata": true, | ||
| "experimentalDecorators": true, | ||
| "sourceMap": true, | ||
| "strict": false, | ||
| "skipLibCheck": true, | ||
| "outDir": "lib", | ||
| "baseUrl": "." | ||
| }, | ||
| "include": ["src/**/*"] | ||
| } |
9993
-30.29%6
-14.29%70
-55.41%