بهینه سازی گردش کار Front-end خود با Webpack

🚀 تا به حال در مورد موضوعات توسعه Backend مانند Scaling، Architecting، Deploying و Managing و غیره صحبت کردهایم. اما امروز مهمترین چیز را خواهیم دید. بسته وب
📍 مشکلی که وب پک در حال حل آن است
وقتی پروژه ما با این همه وابستگی و فایل پیچیده می شود، ما را دچار سردرد می کند. بنابراین، وبپک به زبان ساده این مشکل را با این امکان حل میکند که به توسعهدهندگان اجازه میدهد کدهای خود را در ماژولها سازماندهی کنند و سپس آن ماژولها را در یک فایل واحد جمع کنند. Webpack معمولاً برای بستهبندی و بهینهسازی داراییهای front-end مانند جاوا اسکریپت، CSS و تصاویر برای استفاده در برنامههای وب استفاده میشود.
نگران نباشید ما یک مثال ساده را در ادامه خواهیم دید.
- در اینجا Repo است که می توانید آن را دنبال کنید.
🚀 اطلاعات بیشتر درباره Webpack
برخی چیزهای اضافی به غیر از پیکربندی بسته وب وجود دارد که بارگذاری میشود، مانند بارگیری شیوه نامه، بارگذاری SVG و غیره. به این موارد لودر میگویند. در وب پک لودرها و افزونه هایی وجود دارد.
-
وظیفه لودر این است که وقتی چیزها در حال بارگیری هستند به سادگی روی چیزها کار کند. مانند قبل از ایجاد فایل تکی نهایی، الزامات خاصی مانند Load CSS، Load SVG وجود دارد و این کار از طریق انجام می شود. لودرها.
-
و پس از ایجاد فایل خروجی نهایی، اگر تنظیمات بیشتری باید انجام شود، از طریق انجام می شود پلاگین ها.
🐥 اگر آن را دریافت نکردید، نگران نباشید با استفاده از پیکربندی Webpack آن را بیشتر توضیح خواهیم داد.
فایل Webpack.config.js ما به این صورت است:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: "./app/index.js",
module: {
rules: [
// JavaScript can not load SVGs directly so we'll use someone's written code in
// svg-inline-loader [installed via npm]
// more about svg-loader:- https://www.npmjs.com/package/svg-inline-loader
{
test: /\.svg$/,
loader: 'svg-inline-loader'
},
// Similar to svg-loader, we are using css-loader to load the css and style-loader to inject css into
// our files
// more about css-loader:- https://www.npmjs.com/package/css-loader
// Note:- css-loader is dependent on style-loader
{
test: /\.css$/i,
use: ["style-loader", "css-loader"],
},
// Babel makes our modern JS (JS having features
// like arrow functions etc) run on old browsers that donot support new JS.
{
// This is a Regex which says any js file having js, jsx will be loaded by babel
test: /\.(js)$/,
use: "babel-loader"
}
]
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js"
},
// After creating bundle.js file, to inject into our index.html file we need HTMLInjection that is provided
// by the below plugin.
// Note:- As written above, Loaders do work before generating the output and plugins do after the output...
// It will generate index.html and will take bundle.js to inject into html
// More:- https://webpack.js.org/plugins/html-webpack-plugin/
plugins: [new HtmlWebpackPlugin()],
// Two modes are there:- development, production. Production is more optimized and do minimize the code more
mode: process.env.NODE_ENV == "production" ? "production" : "development"
};
📍 وابستگی هایی که استفاده کرده ایم
npm i css-loader style-loader --save-dev
npm install --save-dev html-webpack-plugin
npm install webpack-dev-server --save-dev
npm install svg-inline-loader --save-dev
npm install webpack webpack-cli --save-dev
📍 برخی از اسکریپت هایی که در package.json اضافه کردیم تا اجرا و سرویس شوند
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack serve",
"build": "NODE_ENV='production' webpack"
},
برای امروز کافی است. امیدوارم طعم Webpack را که باید هنگام ساخت پروژه های فرانت اند خود از آن استفاده کنید، گرفته باشید.
🎉📢 اطلاعیه: ما در حال شروع #100daysofcodechallenge برای ساخت یک محصول نهایی هستیم. قرار است #Opensource شود
🔥 محصول: – فروشگاه تجارت الکترونیک قابل سفارشی سازی 🚀
☺️ از مشارکت استقبال می شود و برای مبتدیانی که منبع باز را شروع می کنند خوب است