Что означает "Генератор кода деоптимизировал стилирование [некоторого файла], поскольку он превышает максимальный" 100 КБ "?
Я добавил новый проект npm в свой проект и потребовал его в одном из моих модулей.
Теперь я получаю это сообщение от webpack,
build modulesNote: The code generator has deoptimised the styling of "D:/path/to/project/node_modules/ramda/dist/ramda.js" as it exceeds the max of "100KB".
Что это значит? Нужно ли предпринимать какие-то действия?
Ответы
Ответ 1
Это связано с параметром compact
для Babel-компилятора, который командует "не включать лишние символы пробелов и терминаторы строк. Если для параметра" auto "compact установлено значение true при размерах вводa > 100 КБ". По умолчанию его значение "auto", поэтому, вероятно, причина, по которой вы получаете предупреждение. См. Вавилонская документация.
Вы можете изменить эту опцию из Webpack с помощью параметра запроса . Например:
loaders: [
{ test: /\.js$/, loader: 'babel', query: {compact: false} }
]
Ответ 2
Кажется, это Вавилонская ошибка. Я предполагаю, что вы используете babel-loader и не исключаете внешние библиотеки из теста загрузчика. Насколько я могу судить, сообщение не вредно, но вы все равно должны сделать что-то вроде этого:
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' }
]
Посмотрите. Это было?
Ответ 3
Любой из следующих трех вариантов избавляется от сообщения (но по разным причинам и с различными побочными эффектами, я полагаю):
- исключить каталог
node_modules
или явно include
каталог, в котором находится ваше приложение (которое, по-видимому, не содержит файлов, превышающих 100 КБ) - установите опцию Babel
compact
в true
(фактически любое значение, кроме "auto") - установите опцию Babel
compact
на false
(см. выше)
# 1 в приведенном выше списке может быть достигнуто либо путем исключения каталога node_modules
либо node_modules
явного включения каталога, в котором находится ваше приложение.
Например, в webpack.config.js
:
let path = require('path');
....
module: {
loaders: [
...
loader: 'babel',
exclude: path.resolve(__dirname, 'node_modules/')
... или с помощью include: path.resolve(__dirname, 'app/')
(снова в webpack.config.js
).
№ 2 и № 3 в приведенном выше списке могут быть выполнены методом, предложенным в этом ответе, или (моим предпочтением) путем редактирования файла .babelrc
. Например:
$ cat .babelrc
{
"presets": ["es2015", "react"],
"compact" : true
}
Протестировано со следующей настройкой:
$ npm ls --depth 0 | grep babel
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
Ответ 4
Я попробовал Ricardo Stuven, но это не сработало для меня. Что в итоге закончилось добавлением "compact": false в мой .babelrc файл:
{
"compact": false,
"presets": ["latest", "react", "stage-0"]
}
Ответ 5
Для более подробного объяснения читайте THIS LINK
, это вариант Babel compiler
который дает команду не включать лишние пробельные символы и ограничители строки. несколько раз назад его порог составлял 100KB
500KB
а сейчас - 500KB
.
Я предлагаю вам отключить эту опцию в вашей среде разработки, используя этот код в файле .babelrc
.
{
"env": {
"development" : {
"compact": false
}
}
}
Для производственной среды Babel
используйте конфигурацию по умолчанию, которая является auto
.
Ответ 6
В файле action/redux/webpack/babel исправлена эта ошибка, удалив script текст тега text/babel
получена ошибка:
<script type="text/babel" src="/js/bundle.js"></script>
нет ошибки:
<script src="/js/bundle.js"></script>
Ответ 7
В Webpack 4 с несколькими правилами для модулей вы просто делаете что-то подобное в своем правиле .js:
{
test: /\.(js)$/,
loader: 'babel-loader',
options: {
presets: ['es2015'], // or whatever
plugins: [require('babel-plugin-transform-class-properties')], // or whatever
compact: true // or false during development
}
},
Ответ 8
Возможно, это не тот случай, когда исходный вопрос OP, но: если вы превышаете максимальный размер по умолчанию, это может быть признаком какой-то другой проблемы, которая у вас есть. в моем случае у меня было предупреждение, но в конечном итоге оно превратилось в ФАТАЛЬНУЮ ОШИБКУ: MarkCompactCollector: полупространственная копия, откат в старом поколении. Выделение не удалось - куча JavaScript из памяти.
причина была в том, что я динамически импортировал текущий модуль, так что это закончилось бесконечным циклом...