Инструмент, в котором я работаю, использует программный код Babel. Он требует нескольких плагинов, и все работает нормально.Как программно передавать параметры Babel transforms/plugins?
Tho, я хочу передать варианты преобразования Babel. Я понял, что еще не сделал этого, и выглядит так, как будто я просто не работает.
В частности, я хочу включить babel-transform-strict-mode
и передать strict:false
, чтобы отключить глобальный строгий режим.
Документов объяснить, как использовать его, когда с .babelrc
файла:
// with options
{
"plugins": [
["transform-strict-mode", {
"strict": true
}]
]
}
В моем коде у меня есть:
const babelify = require("babelify")
, es2015 = require("babel-preset-es2015")
, reactify = require("babel-preset-react")
, strictMode = require("babel-plugin-transform-strict-mode")
;
...
this.browserify.transform(babelify, {
global: true,
babelrc: false,
presets: [
reactify
, es2015
, [
strictMode
, { strict: false }
]
]
});
Хотя es2015
и reactify
работы большой в presets
массиве, добавив strictMode
с { strict: false }
просто не работает.
Ошибки:
ReferenceError: [BABEL] /home/.../index.js: Unknown option: foreign.visitor.
Check out http://babeljs.io/docs/usage/options/ for more
information about options.
A common cause of this error is the presence of a
configuration options object without the corresponding
preset name. Example:
Invalid:
`{ presets: [{option: value}] }`
Valid:
`{ presets: [['presetName', {option: value}]] }`
For more detailed information on preset configuration,
please see
http://babeljs.io/docs/plugins/#pluginpresets-options.
Если я использую вместо strictMode
имени (["transform-strict-mode", { strict: false }]
) преобразований, он не найдет модуль, очевидно, потому, что это является частью другого модуля.
Как я могу передать параметры модулям require
(в данном случае strictMode
), программно (без babelrc
)?
А, это интересно. Итак, значит ли это, что я больше не буду «импортировать foo из« foo »? Я закончил использовать [этот плагин] (https://github.com/genify/babel-plugin-transform-remove-strict-mode), который, вероятно, что он делает, просто удаляет '' use strict '; 'kinda везде. Благодаря! –
Это вариант, просто имейте в виду, что ваш код больше не совместим со спецификациями, поэтому, если вы хотите использовать модули ES6 после их приземления в узле, он снова столкнется с этой проблемой и не сможет исправить это, не используя CommonJS. – loganfsmyth
У меня просто были проблемы с некоторыми библиотеками (например, 'underscore') на стороне клиента, потому что они проверяли' if (this._) {...} ', но' this' был 'undefined', поэтому он терпел неудачу , –