kentcdodds / babel-plugin-codegen

💥 Generate code at build-time
https://www.npmjs.com/package/babel-plugin-codegen
MIT License
348 stars 30 forks source link

Doesn't work if config is in "babel.config.js" file #18

Open serhiipalash opened 5 years ago

serhiipalash commented 5 years ago

Plugin doesn't work if your Babel config is in babel.config.js, but all works fine if it is in .babelrc

babel.config.js

module.exports = function() {
  return {
    presets: ['babel-preset-expo'],
    plugins: ['codegen'],
  }
}

.babelrc

{
  "presets": ["babel-preset-expo"],
  "plugins": [
    "codegen"
  ]
}

What you did:

// @codegen

module.exports = '
  module.exports = []
'

What happened:

When I use babel.config.js, I get export from module as string "module.exports = []", like there is no top comment "// @codegen".

When I use .babelrc, I get empty array as export from module, as it should be.

Reproduction repository:

https://github.com/serhiipalash/test-babel-codegen

Latest Expo has babel config in babel.config.js, and I don't want to change it as it is the standard for all future releases.

kentcdodds commented 5 years ago

Hmmm... This is very odd. I'm not sure why it would make any difference. Could you do a little digging to figure out what's wrong here? Thanks!

wamry commented 5 years ago

Same happens with me when im using plugin "transform-remove-console" I fixed it by reseting cache

sylvanaar commented 4 years ago

This seems like a stale issue. I am not having this problem on v4 of the plugin. Though my module.exports is not a function

module.exports = {
    presets: ["module:metro-react-native-babel-preset", "module:react-native-dotenv"],
    plugins: ["codegen"],
};
loynoir commented 3 years ago

Not sure if same kind of babel.config.js issue, but mine babel.config.js issue fixed by

https://github.com/kentcdodds/babel-plugin-codegen/pull/43

Current code using wrong signature hidden below magic linter comment. So, some context got lost but without reported. Maybe some plugins just not effected by that lost context.