Vue CLI 3 не конвертирует поставщиков в ES5 - PullRequest
0 голосов
/ 02 октября 2018

У нас есть проект vue-cli 3.Он работает довольно хорошо и компилируется без проблем.

Дело в том, что мы должны поддерживать старый браузер, поддерживающий только код ES5.

В проект мы интегрировали несколько внешних библиотек, написанных на ES6 (reconnecting-websocketявляется примером).

Проблема

После компиляции нашего проекта с этими внешними компонентами, полученный код vue-cli имеет код ES6.

Например, наш chunk-vendors.js имеет следующий код:

/*!
 * Reconnecting WebSocket
 * by Pedro Ladaria <pedro.ladaria@gmail.com>
 * https://github.com/pladaria/reconnecting-websocket
 * License MIT
 */const o=()=>{if("undefined"!==typeof WebSocket)return 
WebSocket},a=t=>"function"===typeof t&&

с функцией жирной стрелки ES6 const o=()=>{.Таким образом, выполнение этого кода в старых браузерных перерывах.

Вот наш файл .browserlistrc, так как он кажется рекомендуемым способом добавления поддержки браузера в Vue CLI 3:

> 1%
last 2 versions
not ie <= 8
Android >= 4

Кажетсяvue CLI правильно переносит код приложения в ES5.Но это не делает другого прохода по поставщикам.

Есть ли способ настроить vue project, используя CLI v3, чтобы сделать окончательный проход транспиляции ПОСЛЕ сборки, чтобы убедиться, что все файлы ES5совместим?

Мы думали, что встроенные babel и webpack сделают это автоматически, но, похоже, дело не в этом.

Мы пытались использовать параметр transpileDependencies в vue.config.js, но этоничего не изменилось, и жирные стрелки все еще были в куске продавца.

1 Ответ

0 голосов
/ 10 апреля 2019

Создайте файл с именем babel.config.js в том же каталоге, что и ваш vue.config.js файл.

В этом файле вы захотите добавить: -

process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true;
module.exports = {
  presets: ["@vue/app"]
};

Это должно теперьиспользуйте babel для переноса внешних модулей.

Это следует использовать вместе с опцией transpileDependencies в vue.config.js.

...