kentcdodds / babel-plugin-codegen

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

BABEL error when configuring with babel.config.js and with typescript preset #40

Open jackgeek opened 3 years ago

jackgeek commented 3 years ago

With these files:

index.js

// @codegen
module.exports = `console.log("hello world!")`;

babel.config.js

module.exports = {
  presets: ['@babel/preset-typescript'],
  plugins: ['codegen'],
};

I ran this command:

babel --plugins codegen index.js

and got this result:

Error: [BABEL] unknown: Configuration contains string/RegExp pattern, but no filename was passed to Babel
    at matchPattern (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:431:11)
    at /home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:418:35
    at Array.some (<anonymous>)
    at matchesPatterns (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:418:19)
    at configFieldIsApplicable (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:400:10)
    at configIsApplicable (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:395:41)
    at /home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:256:13
    at Array.forEach (<anonymous>)
    at /home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:253:42
    at buildPresetChain (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/config-chain.js:45:17)

Reproduction repository:

https://github.com/jackgeek/codegen-babel-plugin-problem

Problem description:

When using a babel.config.js file the above error occurs, however works fine if you change it to a .babelrc file. Also when you remove the typescript preset it works fine.

jackgeek commented 3 years ago

Sorry I just realized that I should upgrade babel to the latest in my Proof of Bug repo. I have done this and now I get a different error:

Error: /home/jallan/dev/codegen/index.js: [BABEL] unknown: Preset /* your preset */ requires a filename to be set when babel is called directly,
``
babel.transform(code, { filename: 'file.ts', presets: [/* your preset */] });
``
See https://babeljs.io/docs/en/options#filename for more information.
    at validateIfOptionNeedsFilename (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:293:11)
    at /home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:305:52
    at Array.forEach (<anonymous>)
    at validatePreset (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:305:25)
    at loadPresetDescriptor (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:312:3)
    at loadPresetDescriptor.next (<anonymous>)
    at recursePresetDescriptors (/home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:115:30)
    at recursePresetDescriptors.next (<anonymous>)
    at /home/jallan/dev/codegen/node_modules/@babel/core/lib/config/full.js:189:21
    at Generator.next (<anonymous>) {
  code: 'BABEL_TRANSFORM_ERROR'

I have pushed the changes to the repo

loynoir commented 3 years ago

@jackgeek Tested fixed by pull/43