Ñepyrũrã & Webpack rehegua
Pe ñe’ẽmondo oficial mba’éichapa ikatu emoinge ha embojoaju Bootstrap CSS ha JavaScript nde proyecto-pe Webpack rupive.
Mbohete
Romopu’ã hína peteĩ proyecto Webpack Bootstrap ndive zero guive, upévare oĩ peteĩ requisito previo ha umi paso tenondegua ikatu mboyve añetehápe roñepyrũ. Ko ñemboheko ojerure oguereko hag̃ua Node.js oñemboguapýva ha michĩmi familiaridad terminal rehegua.
-
Ejapo peteĩ proyecto ryru ha emohenda npm. Jajapóta pe
my-project
carpeta ha ñamoñepyrũta npm-y
argumento reheve ani hag̃ua ojapo ñandéve opaite porandu interactivo.mkdir my-project && cd my-project npm init -y
-
Emoĩ Webpack. Upe rire tekotevẽ ñamoĩ ñande Webpack ñemoheñói dependenciakuéra:
webpack
Webpack apytuꞌurã,webpack-cli
ikatu hag̃uáicha ñamombaꞌapo Webpack tembiapoukapy terminal guive, hawebpack-dev-server
ikatu hag̃uáicha ñamombaꞌapo peteĩ servidor desarrollo local. Jaipuru--save-dev
ñamoĩ hag̃ua señal koꞌã dependencia haꞌeha desarrollo jeporurãnte ha ndahaꞌeiha producción-pe g̃uarã.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Emoĩ Bootstrap. Ko’áĝa ikatu ñamoĩ Bootstrap. Avei romoĩta Popper ore dropdown, popover ha tembipuru’i odepende guive hese oñemohenda hag̃ua. Ndereplaneairamo reipuru hag̃ua umi componente, ikatu remboyke Popper ko’ápe.
npm i --save bootstrap @popperjs/core
-
Emoĩ umi dependencia adicional. Webpack ha Bootstrap ykére, ñaikotevẽve mbovymi dependencia jagueru ha ñambojoaju porã hag̃ua Bootstrap CSS ha JS Webpack ndive. Ko’ãva apytépe oĩ Sass, oĩ cargador ha Autoprefixer.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Koꞌág̃a jaguerekóma opaite dependencia oñeikotevẽva oñemboguapýva, ikatu ñañepyrũ ñambaꞌapo jajapóvo umi proyecto rembiapokue ha ñamoinge Bootstrap.
Proyecto estructura rehegua
Rojapóma pe my-project
carpeta ha roñepyrũma npm. Koꞌág̃a jajapóta avei ñande src
ha dist
carpetakuéra ñamohuꞌa hag̃ua proyecto estructura. Emombaꞌapo koꞌa mbaꞌe my-project
, térã ejapo nde po rupive kundaha ha vore ñemohenda ojehechaukáva iguýpe.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
Rejapopa rire, ne proyecto completo ojehechava’erã kóicha:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Ko’áĝaite, opa mba’e oĩ hendaitépe, ha katu Webpack nomba’apói noromyenyhẽigui webpack.config.js
gueteri ore.
Emohenda Webpack rehegua
Oñemoĩvo umi dependencia ha ñande proyecto carpeta oĩmava ñañepyrũ hag̃ua codificación, koꞌág̃a ikatu ñamohenda Webpack ha ñamombaꞌapo ñande proyecto localmente.
-
Eipe’a
webpack.config.js
nde editor-pe. Oĩgui en blanco, tekotevẽta ñamoĩ hese michĩmi boilerplate config ikatu hag̃uáicha ñamoñepyrũ ñande servidor. Ko config pehẽngue heꞌi Webpack-pe oheka hag̃ua ore proyecto JavaScript, moõpa osẽvaꞌerã kódigo oñembohekopyréva (dist
), ha mbaꞌeichaitépa oñekomportavaꞌerã servidor desarrollo rehegua (ojepeꞌavaꞌerãdist
carpeta-gui recarga haku reheve).const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true } }
-
Upe rire ñamyenyhẽ ñande
dist/index.html
. Kóva ha’e HTML página Webpack okargáta kundahárape oipuru hag̃ua CSS ha JS oñembojoajúva ñamoĩtava hese umi tembiaporã oúvape. Upéva jajapo mboyve, ñameꞌevaꞌerã chupe peteĩ mbaꞌe ojehechauka hag̃ua ha oike hag̃uaoutput
JS pe paso mboyvegua guive.<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap w/ Webpack</title> </head> <body> <div class="container py-4 px-3 mx-auto"> <h1>Hello, Bootstrap and Webpack!</h1> <button class="btn btn-primary">Primary button</button> </div> <script src="./main.js"></script> </body> </html>
Roike hína ko’ápe michĩmi Bootstrap estilo rehegua pe
div class="container"
ha<button>
ikatu hag̃uáicha rohecha araka’épa ojekarga Bootstrap CSS Webpack rupive. -
Koꞌág̃a ñaikotevẽ peteĩ script npm rehegua ñamombaꞌapo hag̃ua Webpack. Eipe’a
package.json
ha emoĩve pestart
script ojehechaukáva iguýpe (reguerekómava’erã pe script prueba rehegua). Roipurúta ko script romoñepyrũ hag̃ua ore servidor dev Webpack local.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Ha ipahápe, ikatu ñamoñepyrũ Webpack. Pe
my-project
kundaha oĩva nde terminal-pe guive, emongu’e upe script npm oñembojoapy pyahúva:npm start
Ko ñembohekopyrã vore oúva ha ipahaitépe, ñamohendava’erã umi Webpack kargador ha ñamoinge opaite Bootstrap CSS ha JavaScript.
Importación Ñepyrũrã
Ojegueru hag̃ua Bootstrap Webpack-pe oikotevẽ umi kargador romoĩva’ekue peteĩha vore’ípe. Romoĩma chupekuéra npm ndive, ha katu ko’áĝa tekotevẽ oñemboheko Webpack ojepuru hag̃ua.
-
Emohenda umi cargador -pe
webpack.config.js
. Ko’áĝa ne rembiapokue ñembohekorã oñembotýma ha ojoaju va’erã pe ñe’ẽmondo iguýpe. Pe parte pyahu añoite ko’ápe ha’e pemodule
sección.const path = require('path') module.exports = { entry: './src/js/main.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist') }, devServer: { static: path.resolve(__dirname, 'dist'), port: 8080, hot: true }, module: { rules: [ { test: /\.(scss)$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'postcss-loader', options: { postcssOptions: { plugins: () => [ require('autoprefixer') ] } } }, { loader: 'sass-loader' } ] } ] } }
Ko'ápe oî peteî recapitular mba'érepa ñaikotevê opa ko'ã cargador.
style-loader
omoinge CSS peteĩ<style>
elemento-pe<head>
oĩva HTML página-pe,css-loader
oipytyvõ ojeporúvo@import
haurl()
,postcss-loader
oñeikotevẽ Autoprefixer-pe g̃uarã, hasass-loader
oheja ñandéve jaipuru Sass. -
Koꞌág̃a, ñamoinge Bootstrap CSS. Emoĩ ko’ãva
src/scss/styles.scss
to emoinge hag̃ua opaite Bootstrap ypykue Sass.// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
Ikatu avei regueru ore hoja de estilo peteĩteĩ reipotáramo. Emoñe’ẽ ore Sass import docs rehegua umi detalle rehegua.
-
Upe rire jakarga CSS ha ñamoinge Bootstrap JavaScript. Emoĩ ko’ãva
src/js/main.js
to ekargávo CSS ha emoinge opaite Bootstrap JS. Popper ojegueru jeýta ijeheguiete Bootstrap rupive.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Ikatu avei emoinge JavaScript plugins peteĩteĩ tekotevẽháicha eñongatu hag̃ua umi paquete tuichakue oguejy:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Emoñe’ẽ ore JavaScript kuatiañe’ẽ reikuaave hag̃ua mba’éichapa ojepurukuaa Bootstrap ñembohekopyrã.
-
Ha nde rejapopa! 🎉 Bootstrap ypykue Sass ha JS ojekargapaitévo, ne servidor desarrollo local ko’áĝa ojehechava’erã péicha.
Ko’áĝa ikatu eñepyrũ emoĩve oimeraẽva componente Bootstrap rehegua reipuruséva. Ejesareko katuete Webpack techapyrã proyecto hekoitépe mba’éichapa ikatu emoinge Sass personalizado adicional ha emoporãve ne ñemopu’ã eguerúvo Bootstrap CSS ha JS pehẽngue añoite reikotevẽva.
Umi optimización producción rehegua
Ojesarekóva ne ñembosako’íre, ikatu emoañetéta peteĩva umi optimización adicional seguridad ha velocidad rehegua ideprovéchova emongu’e hag̃ua proyecto producción-pe. Eñamindu’u ko’ã mba’eporã ndojeporúiha Webpack techapyrã proyecto -pe ha nde pópe oĩ remboguata hag̃ua.
Ojepe’ávo CSS
Pe style-loader
romohendavaꞌekue yvateve omondo convenientemente CSS pe paquete-pe ani hag̃ua oñeikotevẽ ojekarga manualmente peteĩ CSS vore ipype dist/index.html
. Ko enfoque ikatu nomba’apói peteĩ Política de Seguridad de Contenido estricto ndive, jepémo upéicha, ha ikatu oiko chugui peteĩ cuello de botella nde aplicación-pe tuicha rupi paquete tuichakue.
Ojepeꞌa hag̃ua CSS ikatu hag̃uáicha jakarga directamente dist/index.html
, eipuru mini-css-extract-loader
Webpack plugin.
Ñepyrũrã, emoĩ pe plugin:
npm install --save-dev mini-css-extract-plugin
Upéi emoĩ instancia ha eipuru pe plugin Webpack ñembohekorãme:
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -1,8 +1,10 @@
+const miniCssExtractPlugin = require('mini-css-extract-plugin')
const path = require('path')
module.exports = {
mode: 'development',
entry: './src/js/main.js',
+ plugins: [new miniCssExtractPlugin()],
output: {
filename: "main.js",
path: path.resolve(__dirname, "dist"),
@@ -18,8 +20,8 @@ module.exports = {
test: /\.(scss)$/,
use: [
{
- // Adds CSS to the DOM by injecting a `<style>` tag
- loader: 'style-loader'
+ // Extracts CSS for each JS file that includes CSS
+ loader: miniCssExtractPlugin.loader
},
{
Oñemboguata npm run build
jey rire, oĩta peteĩ vore pyahu dist/main.css
, oguerekótava opaite CSS oguerúva src/js/main.js
. Ehecháramo dist/index.html
ne kundahárape ko’áĝa, ofaltáta pe estilo, ko’áĝa oĩháicha dist/main.css
. Ikatu emoinge CSS oñembohekopyréva dist/index.html
kóicha:
--- a/webpack/dist/index.html
+++ b/webpack/dist/index.html
@@ -3,6 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="stylesheet" href="./main.css">
<title>Bootstrap w/ Webpack</title>
</head>
<body>
Ojepe’ávo umi SVG rembiapokue
Bootstrap CSS oguereko heta ñe’ẽmondo SVG vore rehegua data:
URI línea ryepýpe rupive. Emohenda ramo peteĩ Polítika Ñeñangareko Contenido rehegua ne rembiaporãme g̃uarã ojokóva data:
URI taꞌãngamýime g̃uarã, upéicharamo koꞌã SVG vore ndojekargamoꞌãi. Ikatu ejere ko apañuãire eipe’ávo umi SVG vore en línea eipurúvo Webpack mba’ekuaarã módulo activo rehegua.
Emohenda Webpack eipe’a hag̃ua SVG vore’i ryepypegua kóicha:
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
@@ -16,6 +16,14 @@ module.exports = {
},
module: {
rules: [
+ {
+ mimetype: 'image/svg+xml',
+ scheme: 'data',
+ type: 'asset/resource',
+ generator: {
+ filename: 'icons/[hash].svg'
+ }
+ },
{
test: /\.(scss)$/,
use: [
Oñemboguata npm run build
jey rire, rejuhúta umi SVG vore ojeipeꞌavaꞌekue CSS-pe dist/icons
ha oñemboheko porãva CSS-gui.
¿Rehechápa koʼápe peteĩ mbaʼe naiporãiva térã ndojeporúiva? Eipe’a peteĩ mba’e’oka GitHub -pe . ¿Reikotevẽ pytyvõ oñemyatyrõ hag̃ua? Eheka térã emoñepyrũ peteĩ ñomongeta GitHub-pe.