Wabpack
Kurulum
CoreUI ile sıfırdan bir Webpack projesi oluşturuyoruz, bu nedenle gerçekten başlamadan önce bazı ön koşullar ve adımlar var. Bu kılavuz, Node.js'in yüklü olmasını ve terminal ile bir miktar aşinalığı gerektirir.
Bir proje klasörü oluşturun ve npm'i kurun.
Bir proje klasörü oluşturun ve npm'i kurun.
my-project
klasörünü oluşturacak ve npm'i etkileşimli soruları sormaması için-y
argümanıyla başlatacağız.mkdir my-project && cd my-project
npm init -yWebpack'i kurun. Bir sonraki adımda, Webpack'in çekirdek bileşeni için
webpack
, terminalden Webpack komutlarını çalıştırabilmemiz içinwebpack-cli
ve yerel bir geliştirme sunucusu çalıştırabilmemiz içinwebpack-dev-server
'ı kurmamız gerekiyor. Bu bağımlılıkların yalnızca geliştirme kullanımı için olduğunu belirtmek için--save-dev
kullanıyoruz.npm i --save-dev webpack webpack-cli webpack-dev-server
CoreUI'yi kurun. Şimdi CoreUI'yi kurabiliriz. Aşağı açılır menülerimiz, popover'larımız ve tooltips'lerimiz için konumlandırma gerektirdiğinden Popper'ı da kuracağız. Bu bileşenleri kullanmayı planlamıyorsanız, buradan Popper'ı atlayabilirsiniz.
npm i --save @coreui/coreui @popperjs/core
Ek bağımlılıkları kurun. Webpack ve CoreUI'ye ek olarak, CoreUI'nin CSS'ini ve JS'ini Webpack ile uygun bir şekilde içe aktarmak ve paketlemek için birkaç bağımlılığa daha ihtiyacımız var. Bunlar Sass, bazı yükleyiciler ve Autoprefixer'ı içerir.
npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader
Tüm gerekli bağımlılıkları kurduğumuzda, proje dosyalarını oluşturup CoreUI'yi içe aktarmaya başlayabiliriz.
Proje yapısı
Artık my-project
klasörünü oluşturduk ve npm'i başlattık. Şimdi projenin yapısını tamamlamak için src
ve dist
klasörlerini de oluşturacağız. Aşağıdaki komutu my-project
dizininden çalıştırın veya 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
Tamamladığınızda, projeniz şu şekilde 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.config.js
dosyamızı henüz doldurmadığımız için Webpack çalışmayacak.
Webpack'i yapılandırın
Bağımlılıklar kurulu ve proje klasörümüz kod yazmaya hazır, artık Webpack'i yapılandırabilir ve projemizi yerel olarak çalıştırabiliriz.
webpack.config.js
dosyasını düzenleyicinizde açın. Boş olduğu için, sunucumuzu başlatabilmemiz için bazı temel yapılandırmalar eklememiz gerekecek. Bu yapılandırma, Webpack'e projemizin JavaScript'ini nerede bulacağını, derlenmiş kodun nereye çıkacağını (dist
) ve geliştirme sunucusunun nasıl davranması gerektiğini (sıcak yeniden yükleme iledist
klasöründen çekerek) 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
}
}Sonrasında
dist/index.html
dosyamızı dolduruyoruz. Bu, Webpack'in daha sonraki adımlarda ekleyeceğimiz paketlenmiş CSS ve JS'i kullanmak için tarayıcıda yükleyeceği HTML sayfasıdır. Bunu yapmadan önce bir şeyleri render etmek için bir şeyler vermemiz ve önceki adımda belirtilenoutput
JS'i dahil etmemiz gerekiyor.<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CoreUI w/ Webpack</title>
</head>
<body>
<div class="container py-4 px-3 mx-auto">
<h1>Merhaba, CoreUI ve Webpack!</h1>
<button class="btn btn-primary">Ana buton</button>
</div>
<script src="./main.js"></script>
</body>
</html>Webpack'in CoreUI'nın CSS'ini yüklediğini görebilmemiz için burada
div class="container"
ve `` ile biraz CoreUI stilini dahil ediyoruz.Artık Webpack'i çalıştırmak için bir npm komutuna ihtiyacımız var.
package.json
dosyasını açın ve aşağıda gösterilenstart
komutunu ekleyin (zaten bir test komutunuz olmalı). Bu komutu, yerel Webpack geliştirme sunucumuzu başlatmak için kullanacağız.{
// ...
"scripts": {
"start": "webpack serve --mode development",
"test": "echo \"Error: no test specified\" && exit 1"
},
// ...
}Son olarak, Webpack'i başlatabiliriz. Terminalde
my-project
klasöründen yeni eklediğimiz npm komutunu çalıştırın:npm start
Bu kılavuzun bir sonraki ve son bölümünde, Webpack yükleyicilerini ayarlayacağız ve CoreUI'nın CSS'ini ve JavaScript'ini içe aktaracağız.
CoreUI'yı içe aktarın
CoreUI'yı Webpack'e dahil etmek, 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.
webpack.config.js
'da yükleyicileri ayarlayın. Yapılandırma dosyanız artık tamamlanmış olmalı ve aşağıdaki kod parçasına uygun olmalıdır. Buradaki tek yeni kısımmodule
bölümüdür.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 neden bu yükleyicilere ihtiyacımız olduğuna dair bir özet.
style-loader
, CSS'i HTML sayfasınınbölümünde bir
etiketine enjekte eder.css-loader
@import
veurl()
kullanımını kolaylaştırır.postcss-loader
Autoprefixer için gereklidir vesass-loader
Sass kullanmamıza olanak tanır.Artık CoreUI'nın CSS'ini içe aktaralım.
src/scss/styles.scss
dosyasına CoreUI'nın tüm kaynak Sass'ını içe aktarmak için aşağıdakini ekleyin.// CoreUI'nın tüm CSS'ini içe aktar
@import "~@coreui/coreui/scss/coreui";Ayrıca, isterseniz stil dosyalarımızı tek tek içe aktarabilirsiniz. Detaylar için
Sass içe aktarma belgelerimizi
okuyun.Sonrasında CSS'i yükleyelim ve CoreUI'nın JavaScript'ini içe aktaralım.
src/js/main.js
dosyasına CSS'i yüklemek ve CoreUI'nın tüm JS'ini içe almak için aşağıdakini ekleyin. Popper, CoreUI aracılığıyla otomatik olarak içe aktarılacak.// Özel CSS'imizi içe aktar
import '../scss/styles.scss'
// CoreUI'nın tüm JS'ini içe aktar
import * as coreui from '@coreui/coreui'Ayrıca gerekir ise JavaScript eklentilerini tek tek içe aktarabilirsiniz:
import Alert from '@coreui/coreui/js/dist/alert'
// veya, hangi eklentilere ihtiyacınız olduğunu belirtin:
import { Tooltip, Toast, Popover } from '@coreui/coreui'CoreUI'nın eklentilerini nasıl kullanacağınız hakkında daha fazla bilgi için
JavaScript belgelerimizi
okuyun.Ve işte bu kadar! 🎉 CoreUI'nın kaynak Sass'ı ve JS'i tamamen yüklendiğinden, yerel geliştirme sunucunuz artık şu şekilde görünmelidir.
Artık kullanmak istediğiniz CoreUI bileşenlerini eklemeye başlayabilirsiniz.
Üretim optimizasyonları
Kurulumunuza bağlı olarak, projeyi üretimde çalıştırmak için faydalı olabilecek ek güvenlik ve hız optimizasyonları uygulamak isteyebilirsiniz.
CSS'i çıkarma
Yukarıda yapılandırdığımız style-loader
, CSS'i pakete dahil eder, böylece dist/index.html
içinde bir CSS dosyasını manuel olarak yüklemeye gerek kalmaz. Ancak, bu yaklaşım sıkı bir İçerik Güvenliği Politikası ile çalışmayabilir ve büyük paket boyutu nedeniyle uygulamanızda bir darboğaz haline gelebilir.
CSS'i dist/index.html
dosyasından doğrudan yükleyebilmek için mini-css-extract-loader
Webpack eklentisini kullanarak ayırın.
Öncelikle, eklentiyi kurun:
npm install --save-dev mini-css-extract-plugin
Sonra, eklentiyi Webpack yapılandırmasında başlatın ve kullanın:
--- a/webpack/webpack.config.js
+++ b/webpack/webpack.config.js
+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: [
{
- // CSS'i bir `<style>` etiketi ile DOM'a ekler
- loader: 'style-loader'
+ // CSS'i dahil eden her JS dosyası için CSS'i ayırır
+ loader: miniCssExtractPlugin.loader
},
{
npm run build
komutunu tekrar çalıştırdıktan sonra, dist/main.css
adlı yeni bir dosya oluşacaktır; bu dosya src/js/main.js
tarafından içe aktarılan tüm CSS'i içerecektir. Artık tarayıcınızda dist/index.html
'i görüntülediğinizde stil eksik olacaktır, çünkü artık dist/main.css
'de bulunmaktadır. Üretim CSS'i dist/index.html
dosyasına aşağıdaki gibi ekleyebilirsiniz:
--- 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>CoreUI w/ Webpack</title>
</head>
<body>
SVG dosyalarını çıkarma
CoreUI'nın CSS'i, çevrimiçi data:
URI'leri aracılığıyla birçok SVG dosyasına atıfta bulunur. Projeniz için data:
URI'leri için bir İçerik Güvenliği Politikası tanımlarsanız, bu SVG dosyaları yüklenmeyecektir. Bu problemi aşmak için, Webpack'in varlık modülleri özelliğini kullanarak çevrimiçi SVG dosyalarını çıkarabilirsiniz.
Inline SVG dosyalarını çıkarmak için Webpack'i belirli bir şekilde yapılandırmanız gerekecek.
Webpack'i şu ş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: [
npm run build
komutunu tekrar çalıştırdıktan sonra, SVG dosyalarını dist/icons
klasörüne çıkaracak ve CSS'den düzgün bir şekilde referans verecektir.