«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Инструмент разработчика не нужен

Инструмент разработчика не нужен

Опубликовано 8 ноября 2024 г.
Просматривать:396

Devtool is not necessary

Несколько месяцев назад я работал над фронтенд-проектом. Проект представлял собой микроинтерфейс, который должен был быть интегрирован в устаревшую панель управления.

Причина использования микроинтерфейса заключалась в уменьшении сложности информационной панели. Меня воодушевила эта задача, и я с головой погрузился в нее.

Я настраиваю микроинтерфейс с помощью Webpack, React и Typescript. Я использовал chakra ui в качестве фреймворка CSS-IN-JS, axios для интеграции API, и все работало нормально. Однако размер сборки проекта составлял около 14 МБ. Для микрофронтенда это было смехотворно много. Это привело к очень медленному отклику страницы на информационной панели, в которую она была интегрирована. Поэтому передо мной стояла новая задача по оптимизации сборки.

Я думал, что сборка такая большая, потому что для оформления я использовал фреймворк CSS-IN-JS. Поэтому я провел рефакторинг всей кодовой базы с chakra-ui на sass. Угадайте что, размер сборки увеличился с 14мб примерно до 21мб???.

Именно тогда я понял, что проблема не в библиотеке CSS или коде, а в конфигурации веб-пакета. Я начал много проб и ошибок с конфигурацией веб-пакета. Затем я обнаружил, что когда я удалил devtool, размер сборки увеличился с 14 МБ до примерно 600 КБ. Затем я проверил документацию веб-пакета по devtool. Я понял, что это не обязательно. Дополнительная информация здесь:.

Вот краткий обзор конфигурации моего веб-пакета

module.exports = merge(common, {
  name: "client",
  mode: process.env.NODE_ENV,
  devtool: "eval-source-map", //remove devtool
  entry: {
    "microfrontend": "./src/bootstrap.tsx",
  },
  output: {
    path: path.resolve(__dirname, "../dist"),
    filename: "[name]_[hash].js",
    pathinfo: false,
    publicPath: 'http://localhost:6001/',
  },
  ...
}

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

module.exports = merge(common, {
  name: "client",
  mode: process.env.NODE_ENV,
  entry: {
    "microfrontend": "./src/bootstrap.tsx",
  },
  output: {
    path: path.resolve(__dirname, "../dist"),
    filename: "[name]_[hash].js",
    pathinfo: false,
    publicPath: 'http://localhost:6001/',
  },
  ...
}

Спасибо, что прочитали. Надеюсь, вы найдете это полезным.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/akinloludavid/devtool-is-not-necessary-535n?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3