Skip to content

sormy/webpack-fix-default-import-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Webpack Fix Default Import Plugin

THIS PACKAGE IS DEPRECATED

Please use esModuleInterop option that is available since TypeScript 2.7 to use default imports in the same way as in Babel.

Why?

With Babel transpiler you could write:

import React from 'react';
import ReactDOM from 'react-dom';

In this case Babel will be able to resolve module.exports.default as modules.exports if module.exports.default is not defined.

It doesn't work with TypeScript compiler which targets ES5, so we have to use:

import * as React from 'react';
import * as ReactDOM from 'react-dom';

One well know workaround for this issue is to use TWO transpilers, typescript first targeted to ES6 and Babel second targeted to ES5. Extra transpilation takes more time and break source maps.

The other solution is to hook into webpack's require() implementation and polyfill module.exports.default if it is blank and module is not ES6 module.

This plugin hooks into require() and try to polyfill module.exports.default.

Installation

npm install --save-dev webpack-fix-default-import-plugin

webpack.config.js example:

var FixDefaultImportPlugin = require('webpack-fix-default-import-plugin');

module.exports = {
  ...
  plugins: [
    ...
    new FixDefaultImportPlugin()
  ],
};

tsconfig.json example:

{
  "compilerOptions": {
    "sourceMap": true,
    "noImplicitAny": true,
    "noEmitHelpers": true,
    "allowSyntheticDefaultImports": true,   // required
    "module": "commonjs",                   // required
    "target": "es5",                        // required
    "jsx": "react"
  },
  "exclude": [
    "node_modules",
    "typings/globals"
  ]
}

tslint.json example:

{
  ...
  "rules": {
    ...
    "no-unused-variable": [true, {"ignore-pattern": "^(React|ReactDOM)$"}],
    "import-name": false,
    "no-default-export": false
  }
}

About

Webpack plugin to fix missing module default export

Resources

Stars

Watchers

Forks

Packages

No packages published