webpack 4 + babel 6 + ES Модуль и скрипт потребления - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь создать библиотеку, которую можно использовать одним из следующих способов:

import MyLibrary from 'mylibrary';
const instance = new Mylibrary();

и

<script src="mylibrary.js"></script>
<script>
    var instance = new MyLibrary();
</script>

Для этого у меня есть очень простой индекс.js, который содержит:

class MyLibrary {
    hello() {
        console.log('hello');
    }
}

export default MyLibrary;

И я установил через npm webpack / webpack-cli / babel-core / babel-cli / babel-preset-env и babel-loader.Затем я создал файл webpack.config.js со следующим содержимым:

const path = require('path')

module.exports = {
    entry: {
        MyLibrary: './src/index.js'
    },
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: '[name].js',
        library: '[name]',
        libraryExport: 'default',
        libraryTarget: 'umd',
        umdNamedDefine: true
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /(node_modules|bower_components)/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['env']
                    }
                }
            }
        ]
    }
};

Когда я проверяю его:

  1.  <script src="MyLibrary.js"></script>
     <script>
         var instance = new MyLibrary();
         console.log(instance.hello());
     </script>
    

    Работает 1019 *

  2.  import MyLibrary from './MyLibrary.js';
     console.log(MyLibrary);
    

    Я получаю следующую ошибку : Uncaught SyntaxError: The requested module './MyLibrary.js' does not provide an export named 'default'

Если удалить правило libraryExport: 'default' из моей конфигурации webpack, тогда:

  1. Мне нужно вызвать мою библиотеку так: var instance = new MyLibrary.default();
  2. У меня все еще проблема та же Uncaught SyntaxError: The requested module './MyLibrary.js' does not provide an export named 'default'

Как я могу получить эту работу?

...