Webpack 4 - Невозможно правильно перенести ES6 в UMD - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь перенести более старую библиотеку для использования импорта / экспорта ES6 (например, замена const SomeClass = require('./SomeClass') на import SomeClass from './SomeClass').

Проблема заключается в том, что при попытке использоватьСгенерированный пакет umd lib, вместо самой библиотеки возвращается экземпляр Module.

<script src="lib.min.js"></script>
<script>
var lib = new Lib();
// Should be Lib instance, instead receive the following:
Module { {default: ƒ, __esModule: true, Symbol(Symbol.toStringTag): "Module" }
<script>

Вот мои package.json devDependencies:

"@babel/core": "^7.4.3",
"@babel/preset-env": "^7.4.3",
"babel-loader": "^8.0.5",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"webpack": "^4.30.0",
"webpack-cli": "^3.3.1"

Вот мой конфиг веб-пакета:

module.exports = {
    mode: 'production',
    entry: './src/index.js',
    output: {
        libraryTarget: 'umd',
        library:       'Lib',
        filename:      'lib.min.js',
        path:          (__dirname + '/dist')
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                include: [__dirname + '/src'],
                loader: 'babel-loader',
                options: {
                    presets: ['@babel/preset-env']
                }
            }
        ]
    }
};

А вот пример кода из библиотеки, над которой я работаю:

// /src/SomeClass.js
export default class SomeClass {...};

// /src/index.js
import SomeClass from './SomeClass';
export default SomeClass;

Возможно, я что-то напутал с веб-пакетом/ babel-loader, но не могу найти, что именно я делаю неправильно.

1 Ответ

0 голосов
/ 02 мая 2019

После отслеживания различных потоков выпуска github, похоже, что это предназначенное поведение для Babel6 +, так как они отбросили экспорт по умолчанию modules.export (https://github.com/babel/babel/issues/2212).

Если вам нужно добавить его (например, для предотвращения вызова)Lib.default), есть babel-plugin-add-module-exports, который должен это исправить. Моя обновленная конфигурация загрузчика babel выглядит следующим образом:

presets: [['@babel/env', { 'modules': 'umd' }]],
plugins: ['add-module-exports']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...