Выходной файл Webpack для экспорта по умолчанию вместо module.exports - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть случай, когда мне нужен веб-пакет для создания файла с использованием синтаксиса export, а не module.exports.Возможно ли это?

Вот мой конфиг:

const path = require('path');

module.exports = {
  mode: "production",
  entry: "./node/example.js",
  node: {
    console: true,
    global: true,
    process: true,
    __filename: true,
    __dirname: true,
    Buffer: true,
    setImmediate: true,
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'example.js',
    libraryTarget: 'commonjs-module'
  },
  resolve: {
    // options for resolving module requests
    // (does not apply to resolving to loaders)
    modules: [
      "node_modules",
      path.resolve(__dirname, "app")
    ],
    // directories where to look for modules
    extensions: [".js", ".ts", ".jsx", ".css"],
  },

  target: "node", // enum  // the environment in which the bundle should run

}

example.js выглядит следующим образом:

module.exports = function() {
  return 'hello world';
}

Что мне нужно для веб-пакетаdo это экспорт с export default вместо module.exports =.

1 Ответ

0 голосов
/ 22 декабря 2018

Вы можете использовать транспортер (например, Babel), чтобы позволить вам использовать языковые функции, которые не поддерживаются вашей средой выполнения (например, синтаксис import и export).Вы можете установить необходимые модули с помощью

npm i @babel/core @babel/preset-env babel-loader

, который устанавливает ядро ​​Babel, плагин, который передает будущие языковые функции, и загрузчик веб-пакетов для предварительной обработки файлов JS с Babel.

Затемвам понадобится файл конфигурации .babelrc в корневом каталоге проекта.В этом случае он просто должен содержать следующее

{"presets": ["@babel/preset-env"]}

, которое сообщает Babel, что вы хотите использовать «предустановленный env».плагин для переноса ваших операторов import и export, между прочим.

Наконец, вам нужно указать Webpack использовать Babel для загрузки файлов JS.Вы можете сделать это, добавив список module.rules в конфигурацию вашего Webpack следующим образом.

node: { /* ... */ },
module: {
    rules: [
        {test: /\.js$/, use: 'babel-loader'}
    ]
}
...