unplugin-strip-exports

Remove specific named exports in your JavaScript code.
17,471
Install
npm install unplugin-strip-exports
Latest Version:0.1.9
License:MIT
Last Updated:Dec 28, 2022
Links: npm
Maintainer: wobsoriano

unplugin-strip-exports

Remove specific named exports in your JavaScript code. Like getServerSideProps and getStaticProps of Next.js.

Install

pnpm add unplugin-strip-exports -D
// vite.config.ts
import StripExports from 'unplugin-strip-exports/vite'

export default defineConfig({
  plugins: [
    StripExports({
      match() {
        return ['getServerSideProps']
      }
    }),
  ],
})

// rollup.config.js
import StripExports from 'unplugin-strip-exports/rollup'

export default {
  plugins: [
    StripExports({
      match() {
        return ['getServerSideProps']
      }
    }),
  ],
}

// webpack.config.js
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-strip-exports/webpack')({
      match() {
        return ['getServerSideProps']
      }
    })
  ]
}

// esbuild.config.js
import { build } from 'esbuild'
import StripExports from 'unplugin-strip-exports/esbuild'

build({
  plugins: [StripExports({
    match() {
      return ['getServerSideProps']
    }
  })],
})

// svelte.config.js
import { removeExports } from 'unplugin-strip-exports'

const config = {
  preprocess: [
    {
      script({ content }) {
        return removeExports(content, ['getServerSideProps'])
      }
    }
  ]
}

Now if you have a index.tsx:

import fs from 'fs'

export const getServerSideProps = () => {
  return {
    content: fs.readFileSync('./foo.txt', 'utf-8'),
  }
}

export default ({ content }) => {
  return <div>{content}</div>
}

The output will be:

export default ({ content }) => {
  return <div>{content}</div>
}

Advanced Usage

// vite.config.ts
import StripExports from 'unplugin-strip-exports/vite'

export default defineConfig({
  plugins: [
    StripExports({
      match(filepath, ssr) {
        // Ignore SSR build
        if (ssr)
          return

        // Remove getServerSideProps in "pages" in browser build
        if (filepath.startsWith(pagesDir))
          return ['getServerSideProps']
      }
    }),
  ],
})

Credits

This plugin is a essentially a copy of babelTransformClientSidePages() util function of Rakkas.

License

MIT

Related Packages

unplugin-font-to-buffer

Import font files as Buffer.

1,355
vite-plugin-markdown

Import markdown files in vite

1,962,521 294
vite-plugin-markdoc

Markdoc plugin for Vite

15,122
unplugin-vue-named-export

Named export for Vue SFC.

9,463 22
frontmatter-markdown-loader

Webpack loader for Front Matter Markdown file to get front matter attributes, co...

510,179 250

Version History

Version Released License
0.1.9 MIT
0.1.8 MIT
0.1.7 MIT
0.1.6 MIT
0.1.5 MIT