PropTypes: влияние на размер пакета?

#reactjs #react-proptypes

#reactjs #react-proptypes

Вопрос:

Простой вопрос:

Увеличивают ли PropTypes размер отправляемого пакета и будет ли он отображаться только в режиме разработки?

Ответ №1:

Это зависит от того, как вы создаете свой проект. Если вы используете webpack и задаете process.env.NODE_ENV значение production than PropTypes , это не включает проверку всего типа в ваш пакет

Вы можете проверить source code , чтобы понять, что будет включено в ваш пакет для каждой среды.

 if (process.env.NODE_ENV !== 'production') {
  var ReactIs = require('react-is');

  // By explicitly using `prop-types` you are opting into new development behavior.
  var throwOnDirectAccess = true;
  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);
} else {
  // By explicitly using `prop-types` you are opting into new production behavior.
  module.exports = require('./factoryWithThrowingShims')();
}
  

factoryWithThrowingShims просто предоставляет прокладки для всех методов PropTypes, чтобы избежать исключений в вашем коде при вызове некоторого метода из PropTypes в производственной среде. Это означает, что весь код из PropTypes/factoryWithTypeCheckers.js будет включен только тогда, process.env.NODE_ENV когда он не равен production . Если вам нужно полностью (даже Shims ) удалить PropTypes из своего кода, вам нужно использовать некоторые плагины babel.

Ответ №2:

Вы бы использовали PropTypes в devDependencies из package.json . Итак, нет, это не увеличивает производительность сборки.

Комментарии:

1. Как насчет кода компонентов? Будут ли элементы prop-types удалены при сборке?

Ответ №3:

Вы бы использовали этот плагин babel для удаления ненужных PropTypes. https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types

Комментарии:

1. Существуют ли ситуации, когда вы действительно хотели бы включить его в производство? Я в замешательстве относительно того, почему это вообще может быть вариантом? По моему ограниченному пониманию темы, prop-types должен помочь вам в разработке. Есть ли здесь варианты использования, которые я упускаю?

2. На самом деле мне не нравятся PropTypes, но иногда, когда вы регистрируете свои ошибки javascript, это может помочь с неправильными параметрами функций.