How to remove global "use strict" added by babel

Babel 5

You'd blacklist "useStrict". For instance here's an example in a Gruntfile:

babel: {
    options: {
        blacklist: ["useStrict"],
        // ...
    },
    // ...
}

Babel 6

Since Babel 6 is fully opt-in for plugins now, instead of blacklisting useStrict, you just don't include the strict-mode plugin. If you're using a preset that includes it, I think you'll have to create your own that includes all the others, but not that one.


As it has already been mentioned for Babel 6, it's the transform-es2015-modules-commonjs preset which adds strict mode. In case you want to use the whole es2015 preset without module transformations, put this in your .babelrc file:

{
  "presets": [
    ["es2015", { "modules": false }]
  ]
}

This will disable modules and strict mode, while keeping all other es2015 transformations enabled.


There's now a babel plugin that you can add to your config that will remove strict mode: babel-plugin-transform-remove-strict-mode. It's a little ugly in that the "use strict" gets added and then removed, but it makes the config much nicer.

Docs are in the GitHub repo: https://github.com/genify/babel-plugin-transform-remove-strict-mode

Your .babelrc ends up looking like this:

{
  "presets": ["env"],
  "plugins": ["transform-remove-strict-mode"]
}