Что означает "генератор кода деоптимизировал стиль [некоторого файла], поскольку он превышает максимум" 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".

что это значит? Мне нужно что-то предпринять?

6 129

6 ответов:

Это связано с compact опция компилятора Babel, который командует " не включать лишние пробелы и Терминаторы строк. Если установлено значение 'auto' compact, для входных размеров >100 КБ устанавливается значение true." по умолчанию его значение "auto", так что, вероятно, причина, по которой вы получаете предупреждение. Смотрите Бабель документации.

вы можете изменить эту опцию из Webpack с помощью параметр запроса. Для пример:

loaders: [
    { test: /\.js$/, loader: 'babel', query: {compact: false} }
]

это похоже на ошибка Бабеля. Я предполагаю, что вы используете babel-loader и не исключаете внешние библиотеки из вашего теста загрузчика. Насколько я могу судить, сообщение не вредно, но вы все равно должны сделать что-то вроде этого:

loaders: [
    { test: /\.js$/, exclude: /node_modules/, loader: 'babel' }
]

посмотреть. И это все?

либо один из следующих трех вариантов избавляется от сообщения (но по разным причинам и с разными побочными эффектами, я полагаю):

  1. исключить node_modules - каталог или явно include каталог, в котором находится ваше приложение (который предположительно не содержит файлов, превышающих 100 КБ)
  2. установить опции Бабеляcompact до true (на самом деле любое значение, кроме "auto")
  3. установите опцию Babel compact to false (см. выше)

#1 в приведенном выше списке может быть достигнуто либо за исключением 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 в приведенном выше списке могут быть выполнены с помощью предложенного метода в ответ или (мое предпочтение) путем редактирования . Например:

$ cat .babelrc 
{
    "presets": ["es2015", "react"],
    "compact" : true
}

протестировано со следующей настройкой:

$ npm ls --depth 0 | grep babel
├── babel-core@6.7.4
├── babel-loader@6.2.4
├── babel-preset-es2015@6.6.0
├── babel-preset-react@6.5.0

Я старался делать как Рикардо Stuven, но это не сработало для меня. То, что сработало в конце концов, добавило "compact": false к моему .файл babelrc:

{
    "compact": false,
    "presets": ["latest", "react", "stage-0"]
}

в react / redux/webpack/babel build исправлена эта ошибка, удалив скрипт типа тега text / babel

получил ошибку:

<script type="text/babel" src="/js/bundle.js"></script>

ошибка:

<script src="/js/bundle.js"></script>

для более подробного объяснения читайте THIS LINK, это вариант Babel compiler что команды не включать лишние символы пробела и конца строки. несколько раз назад его порог был 100KB а теперь 500KB.

Я предлагаю Вам отключить эту опцию в вашей среде разработки, с этим кодом в .

{
    "env": {
      "development" : {
        "compact": false
      }
    }
}

для производственной среды Babel использовать по умолчанию, который auto.