{"id":20171,"library":"karma-babel-preprocessor","title":"karma-babel-preprocessor","description":"Karma preprocessor to compile ES6+ on the fly with Babel. Version 8.0.2, stable, maintained as part of the Babel ecosystem. Requires @babel/core 7 as a peer dependency. Use with Babel presets to transpile modern JavaScript during test runs. Not a module bundler; for CommonJS you need a separate bundler like webpack or browserify. Key differentiator: seamless integration with Karma test runner, supports per-file Babel options via function properties.","status":"active","version":"8.0.2","language":"javascript","source_language":"en","source_url":"https://github.com/babel/karma-babel-preprocessor","tags":["javascript","karma-plugin","karma-preprocessor","babel","6to5","es6","es2015"],"install":[{"cmd":"npm install karma-babel-preprocessor","lang":"bash","label":"npm"},{"cmd":"yarn add karma-babel-preprocessor","lang":"bash","label":"yarn"},{"cmd":"pnpm add karma-babel-preprocessor","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required for transpilation","package":"@babel/core","optional":false}],"imports":[{"note":"Configuration is set via `babelPreprocessor` key in karma config. Wrong preprocessor pattern applies babel to all files including node_modules.","wrong":"module.exports = function(config) { config.set({ preprocessors: { '**/*.js': ['babel'] } }); };","symbol":"babelPreprocessor","correct":"module.exports = function(config) { config.set({ babelPreprocessor: { options: { presets: ['@babel/preset-env'] } } }); };"},{"note":"Always limit preprocessor to source files only; applying to all files breaks third-party libraries.","wrong":"preprocessors: { '**/*.js': ['babel'] }","symbol":"config.set({ preprocessors })","correct":"preprocessors: { 'src/**/*.js': ['babel'] }"},{"note":"Options must be nested inside `options` key. Directly setting presets at top level is not supported.","wrong":"babelPreprocessor: { presets: ['@babel/preset-env'] }","symbol":"babelPreprocessor.options","correct":"babelPreprocessor: { options: { presets: ['@babel/preset-env'], sourceMap: 'inline' }, filename: function(file) { return file.originalPath; } }"}],"quickstart":{"code":"npm install karma karma-babel-preprocessor @babel/core @babel/preset-env --save-dev\n\n// karma.conf.js\nmodule.exports = function(config) {\n  config.set({\n    frameworks: ['jasmine'],\n    files: [\n      'src/**/*.js',\n      'test/**/*.js'\n    ],\n    preprocessors: {\n      'src/**/*.js': ['babel'],\n      'test/**/*.js': ['babel']\n    },\n    babelPreprocessor: {\n      options: {\n        presets: ['@babel/preset-env'],\n        sourceMap: 'inline'\n      }\n    },\n    browsers: ['ChromeHeadless']\n  });\n};","lang":"javascript","description":"Installs the preprocessor and configures Karma to transpile source and test files with Babel presets."},"warnings":[{"fix":"Update to @babel/core 7 and use @babel/preset-env. If on Babel 6, stick with karma-babel-preprocessor@7.","message":"Version 8.x drops support for Babel 6. Requires @babel/core 7 as peer dependency.","severity":"breaking","affected_versions":">=8.0.0"},{"fix":"Use babel-preset-env and babel-core 6. For Babel 5, use karma-babel-preprocessor@6.","message":"Version 7.x removed support for Babel 5. Requires babel-core 6.","severity":"breaking","affected_versions":">=7.0.0 <8.0.0"},{"fix":"Limit preprocessor to specific paths: 'src/**/*.js', 'test/**/*.js'.","message":"Do not preprocess all files (e.g., '**/*.js'). This includes node_modules and breaks third-party libraries like Jasmine.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use karma-webpack + babel-loader or karma-browserify + babelify for complete module bundling.","message":"karma-babel-preprocessor only transpiles ES modules to CommonJS; it does not resolve or bundle modules. You still need a module bundler like webpack or browserify.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Replace 'babel-polyfill' with '@babel/polyfill' or include core-js and regenerator-runtime directly.","message":"Use of babel-polyfill is deprecated in favor of @babel/polyfill (or better, core-js/regenerator-runtime).","severity":"deprecated","affected_versions":">=8.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Ensure @babel/core is installed: npm install @babel/core --save-dev","cause":"Missing @babel/core dependency; or using karma-webpack with babel-loader which externalizes node_modules.","error":"Module '@babel/core' has been externalized for browser compatibility, cannot be resolved in node_modules"},{"fix":"Run: npm install @babel/core @babel/preset-env --save-dev","cause":"@babel/core not installed or not in node_modules.","error":"Error: Cannot find module '@babel/core'"},{"fix":"Use: babelPreprocessor: { options: { presets: ['@babel/preset-env'] } }","cause":"babelPreprocessor options not nested correctly; e.g., presets set at top level instead of inside options.","error":"Babel presets must be an array of preset names"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}