Önyükleme ve Web Paketi
Webpack kullanarak Bootstrap'in CSS ve JavaScript'ini projenize nasıl dahil edeceğinize ve paketleyeceğinize dair resmi kılavuz.
Kurmak
Bootstrap ile sıfırdan bir Webpack projesi oluşturuyoruz, bu nedenle gerçekten başlayabilmemiz için bazı önkoşullar ve ön adımlar var. Bu kılavuz, Node.js'nin kurulu olmasını ve terminal hakkında biraz bilgi sahibi olmanızı gerektirir.
-
Bir proje klasörü oluşturun ve npm'yi kurun. Klasörü oluşturacağız ve bize tüm etkileşimli soruları sormasını önlemek
my-project
için argümanla npm'yi başlatacağız .-y
mkdir my-project && cd my-project npm init -y
-
Webpack'i yükleyin. Daha sonra Webpack geliştirme bağımlılıklarımızı kurmamız gerekiyor:
webpack
Webpack'in çekirdeği için,webpack-cli
böylece Webpack komutlarını terminaldenwebpack-dev-server
çalıştırabiliriz ve böylece yerel bir geliştirme sunucusu çalıştırabiliriz. Bu--save-dev
bağımlılıkların yalnızca geliştirme kullanımı için olduğunu ve üretim için olmadığını belirtmek için kullanıyoruz.npm i --save-dev webpack webpack-cli webpack-dev-server
-
Bootstrap'i yükleyin. Artık Bootstrap'i kurabiliriz. Açılır listelerimiz, açılır pencerelerimiz ve araç ipuçlarımız, konumları için ona bağlı olduğundan, Popper'ı da kuracağız. Bu bileşenleri kullanmayı düşünmüyorsanız, burada Popper'ı atlayabilirsiniz.
npm i --save bootstrap @popperjs/core
-
Ek bağımlılıklar yükleyin. Webpack ve Bootstrap'a ek olarak, Bootstrap'in CSS ve JS'sini Webpack ile düzgün bir şekilde içe aktarmak ve paketlemek için birkaç bağımlılığa daha ihtiyacımız var. Bunlar arasında Sass, bazı yükleyiciler ve Autoprefixer bulunur.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Artık gerekli tüm bağımlılıkları yüklediğimize göre, proje dosyalarını oluşturmaya ve Bootstrap'i içe aktarmaya başlayabiliriz.
proje yapısı
Klasörü zaten oluşturduk my-project
ve npm'yi başlattık. Şimdi proje yapısını tamamlamak için src
ve klasörlerimizi de oluşturacağız. dist
Aşağıdakileri 'den çalıştırın my-project
veya aşağıda gösterilen klasör ve dosya yapısını manuel olarak oluşturun.
mkdir {dist,src,src/js,src/scss}
touch dist/index.html src/js/main.js src/scss/styles.scss webpack.config.js
İşiniz bittiğinde, projenizin tamamı şöyle görünmelidir:
my-project/
├── dist/
│ └── index.html
├── src/
│ ├── js/
│ │ └── main.js
│ └── scss/
│ └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js
Bu noktada, her şey doğru yerde, ancak Webpack çalışmayacak çünkü henüz doldurmadık webpack.config.js
.
Web Paketini Yapılandır
Bağımlılıklar yüklendiğinde ve proje klasörümüz kodlamaya başlamamız için hazır olduğunda, artık Webpack'i yapılandırabilir ve projemizi yerel olarak çalıştırabiliriz.
-
Editörünüzde açın
webpack.config.js
. Boş olduğu için, sunucumuzu başlatabilmemiz için ona bazı ortak kalıp yapılandırması eklememiz gerekecek. Yapılandırmanın bu kısmı, Webpack'e projemizin JavaScript'ini, derlenmiş kodun nereye (dist
) çıktısını alacağını ve geliştirme sunucusunun nasıl davranması gerektiğini (dist
hot reload ile klasörden çekerek) araması gerektiğini söyler.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 } }
-
Daha sonra bizim için dolduruyoruz
dist/index.html
. Bu, Web paketinin, daha sonraki adımlarda ekleyeceğimiz birlikte verilen CSS ve JS'yi kullanmak için tarayıcıya yükleyeceği HTML sayfasıdır.output
Bunu yapmadan önce, bir önceki adımdaki JS'yi oluşturması ve dahil etmesi için ona bir şey vermeliyiz .<!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>
Bootstrap'ın CSS'sinin Webpack tarafından ne zaman yüklendiğini görebilmemiz için
div class="container"
ve ile birlikte buraya biraz Bootstrap stili ekliyoruz.<button>
-
Şimdi Webpack'i çalıştırmak için bir npm betiğine ihtiyacımız var. Aşağıda gösterilen komut dosyasını açın
package.json
ve ekleyinstart
(test komut dosyasına zaten sahip olmalısınız). Yerel Webpack dev sunucumuzu başlatmak için bu betiği kullanacağız.{ // ... "scripts": { "start": "webpack serve --mode development", "test": "echo \"Error: no test specified\" && exit 1" }, // ... }
-
Ve son olarak, Webpack'i başlatabiliriz.
my-project
Terminalinizdeki klasörden yeni eklenen npm komut dosyasını çalıştırın :npm start
Bu kılavuzun sonraki ve son bölümünde, Webpack yükleyicilerini ayarlayacağız ve tüm Bootstrap CSS ve JavaScript'lerini içe aktaracağız.
Önyüklemeyi İçe Aktar
Bootstrap'i Webpack'e içe aktarmak, ilk bölümde kurduğumuz yükleyicileri gerektirir. Bunları npm ile kurduk, ancak şimdi Webpack'in bunları kullanacak şekilde yapılandırılması gerekiyor.
-
Yükleyicileri ayarlayın
webpack.config.js
. Yapılandırma dosyanız şimdi tamamlandı ve aşağıdaki kod parçasıyla eşleşmelidir. Buradaki tek yeni kısımmodule
bölüm.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' } ] } ] } }
İşte tüm bu yükleyicilere neden ihtiyacımız olduğunun bir özeti. CSS'yi HTML sayfasındaki bir öğeye
style-loader
enjekte eder, Autoprefixer için gerekli olan and kullanımına yardımcı olur ve Sass'ı kullanmamıza izin verir.<style>
<head>
css-loader
@import
url()
postcss-loader
sass-loader
-
Şimdi Bootstrap'ın CSS'sini içe aktaralım.
src/scss/styles.scss
Bootstrap'in tüm kaynak Sass'larını içe aktarmak için aşağıdakini ekleyin .// Import all of Bootstrap's CSS @import "~bootstrap/scss/bootstrap";
İsterseniz stil sayfalarımızı tek tek de içe aktarabilirsiniz. Ayrıntılar için Sass içe aktarma belgelerimizi okuyun .
-
Ardından CSS'yi yüklüyoruz ve Bootstrap'ın JavaScript'ini içe aktarıyoruz.
src/js/main.js
CSS'yi yüklemek ve tüm Bootstrap JS'lerini içe aktarmak için aşağıdakileri ekleyin . Popper, Bootstrap aracılığıyla otomatik olarak içe aktarılacaktır.// Import our custom CSS import '../scss/styles.scss' // Import all of Bootstrap's JS import * as bootstrap from 'bootstrap'
Paket boyutlarını düşük tutmak için JavaScript eklentilerini gerektiği gibi tek tek de içe aktarabilirsiniz:
import Alert from 'bootstrap/js/dist/alert' // or, specify which plugins you need: import { Tooltip, Toast, Popover } from 'bootstrap'
Bootstrap eklentilerinin nasıl kullanılacağı hakkında daha fazla bilgi için JavaScript belgelerimizi okuyun .
-
Ve işin bitti! 🎉 Bootstrap'in kaynak Sass ve JS'si tamamen yüklendiğinde, yerel geliştirme sunucunuz artık böyle görünmelidir.
Artık kullanmak istediğiniz Bootstrap bileşenlerini eklemeye başlayabilirsiniz. Ek özel Sass'ı nasıl ekleyeceğiniz ve yapınızı yalnızca Bootstrap's CSS ve JS'nin ihtiyacınız olan kısımlarını içe aktararak nasıl optimize edeceğiniz konusunda eksiksiz Webpack örnek projesini kontrol ettiğinizden emin olun .
Üretim optimizasyonları
Kurulumunuza bağlı olarak, projeyi üretimde çalıştırmak için yararlı olan bazı ek güvenlik ve hız optimizasyonlarını uygulamak isteyebilirsiniz. Bu optimizasyonların Webpack örnek projesinde uygulanmadığını ve uygulamanın size bağlı olduğunu unutmayın.
CSS'yi Çıkarma
Yukarıda style-loader
yapılandırdığımız, CSS dosyasını manuel olarak yüklemeye gerek kalmaması için pakete uygun şekilde CSS yayar dist/index.html
. Ancak bu yaklaşım, katı bir İçerik Güvenliği Politikası ile çalışmayabilir ve büyük paket boyutu nedeniyle uygulamanızda bir darboğaz haline gelebilir.
Doğrudan adresinden yükleyebilmemiz için CSS'yi ayırmak için Webpack eklentisini dist/index.html
kullanın .mini-css-extract-loader
İlk önce eklentiyi kurun:
npm install --save-dev mini-css-extract-plugin
Ardından, eklentiyi Web paketi yapılandırmasında somutlaştırın ve kullanın:
--- 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
},
{
Yeniden çalıştırdıktan sonra , tarafından içe aktarılan tüm CSS'leri içerecek npm run build
yeni bir dosya olacaktır . Şimdi tarayıcınızda görüntülerseniz , şimdi olduğu gibi stil eksik olacaktır . Oluşturulan CSS'yi şu şekilde ekleyebilirsiniz :dist/main.css
src/js/main.js
dist/index.html
dist/main.css
dist/index.html
--- 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>
SVG dosyalarının ayıklanması
data:
Bootstrap'ın CSS'si, satır içi URI'ler aracılığıyla SVG dosyalarına birden çok referans içerir . Projeniz data:
için görüntüler için URI'leri engelleyen bir İçerik Güvenliği Politikası tanımlarsanız, bu SVG dosyaları yüklenmez. Webpack'in varlık modülleri özelliğini kullanarak satır içi SVG dosyalarını ayıklayarak bu sorunu çözebilirsiniz.
Webpack'i aşağıdaki gibi satır içi SVG dosyalarını çıkaracak şekilde yapılandırın:
--- 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: [
Tekrar çalıştırdıktan sonra , CSS'ye ayıklanan ve CSS'den uygun şekilde referans npm run build
verilen SVG dosyalarını bulacaksınız .dist/icons
Burada yanlış veya güncel olmayan bir şey mi gördünüz? Lütfen GitHub'da bir sorun açın . Sorun giderme konusunda yardıma mı ihtiyacınız var? GitHub'da arama yapın veya bir tartışma başlatın .