rsnext/packages/next/build/babel/plugins/commonjs.ts
Tim Neutkens 3e51ddb8af
Move syntax formatting to prettier (#7454)
* Run prettier over packages/**/*.js

* Run prettier over packages/**/*.ts

* Run prettier over examples

* Remove tslint

* Run prettier over examples

* Run prettier over all markdown files

* Run prettier over json files
2019-05-29 13:57:26 +02:00

30 lines
931 B
TypeScript

import { PluginObj } from '@babel/core'
import { NodePath } from '@babel/traverse'
import { Program } from '@babel/types'
import commonjsPlugin from '@babel/plugin-transform-modules-commonjs'
// Rewrite imports using next/<something> to next-server/<something>
export default function NextToNextServer(...args: any): PluginObj {
const commonjs = commonjsPlugin(...args)
return {
visitor: {
Program: {
exit(path: NodePath<Program>, state) {
let foundModuleExports = false
path.traverse({
MemberExpression(path: any) {
if (path.node.object.name !== 'module') return
if (path.node.property.name !== 'exports') return
foundModuleExports = true
},
})
if (!foundModuleExports) {
return
}
commonjs.visitor.Program.exit.call(this, path, state)
},
},
},
}
}