Импорт Babelify в приложении actJS не заменяет объявления let на var

Я создал небольшое приложение ReactJS, которое запускается в браузере, у меня проблемы со старыми версиями браузера (особенно на устройствах с iOS), приложение построено с помощью node и browserify/babelify

У меня есть следующая настройка gulpfile:

gulp.task('build', function () { return browserify({entries: './src/app.jsx', extensions: ['.jsx'], debug: true}) .transform(babelify) .bundle() .pipe(source('app.js')) .pipe(buffer()) .pipe(minify()) .pipe(gulp.dest('public/layout/lib')) })

со следующим конфигом:

{ "presets": ["env"], "plugins": ["transform-react-jsx"], }

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

import ethereum_address from 'ethereum-address'

код работает, но по какой-то причине у баблифицированного пакета все еще есть use strict и немного let объявления, которые приходят из этого конкретного модуля.

Могу ли я что-нибудь сделать, чтобы babelify фактически заменила эти объявления по мере необходимости, чтобы этот код работал в старых браузерах?

1 ответ

Покопавшись и увидев, что обнаружила Элин Герсин, я теперь понял проблему.

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

результирующее задание глотка выглядит так:

gulp.task('build', ['sass'], function () { return browserify({entries: './src/app.jsx', debug: true}) .transform(babelify, { global: true, only: /^(?:.*\/node_modules\/ethereum-address\/|(?!.*\/node_modules\/)).*$/ }) .bundle() .pipe(source('app.js')) .pipe(buffer()) .pipe(minify()) .pipe(gulp.dest('public/layout/lib')) })

Другие вопросы по тегам