"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > L'outil de développement n'est pas nécessaire

L'outil de développement n'est pas nécessaire

Publié le 2024-11-08
Parcourir:785

Devtool is not necessary

Je travaillais sur un projet frontend il y a quelques mois. Le projet était une microfrontend destinée à être intégrée sur un tableau de bord existant.

La raison de l'approche microfrontend était de réduire la complexité du tableau de bord. J'étais enthousiasmé par ce défi et je me suis plongé dedans.

J'ai configuré le microfrontend à l'aide de webpack, React et TypeScript. J'ai utilisé chakra ui comme framework CSS-IN-JS, axios pour l'intégration API et tout a bien fonctionné. Cependant, la taille de construction du projet était d'environ 14 Mo. Pour une microfrontend, c’était ridiculement grand. Cela a conduit à une réponse très lente des pages dans le tableau de bord où il a été intégré. On m'a donc présenté un nouveau défi pour optimiser la construction.

Je pensais que la version était si grande parce que j'utilisais un framework CSS-IN-JS pour le style. J'ai donc refactorisé toute la base de code de chakra-ui à sass. Devinez quoi, la taille de la construction est passée de 14 Mo à environ 21 Mo ??.

C'est à ce moment-là que j'ai su que le problème ne concernait pas la bibliothèque CSS ou le code mais la configuration du webpack. J'ai commencé beaucoup d'essais et d'erreurs avec la configuration du webpack. J'ai ensuite découvert que lorsque j'avais supprimé l'outil de développement, la taille de la build passait de 14 Mo à environ 600 Ko. Ensuite, j'ai vérifié la documentation du webpack sur devtool. J'ai réalisé que ce n'était pas obligatoire. Plus d'informations ici :.

Voici un aperçu de la configuration de mon webpack

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/',
  },
  ...
}

En résumé, la solution au problème que j'ai rencontré a été résolue en supprimant simplement une ligne de code.

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/',
  },
  ...
}

Merci d'avoir lu. J'espère que cela vous sera utile.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/akinloludavid/devtool-is-not-necessary-535n?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3