Vue.js Vue-CLI Kullanımı

Vue ile ilgili son örneklerde (özellikle Task, REST API) Vue CLI’a temel olarak giriş yapmıştım.

AA

Vue CLI (Vue Command Line Interface) esasında Single-File JavaScript Components için de bir gereksinim. Vue projeleri oluşturmak için ihtiyaç duyduğumuz tüm yapılandırmaları sunan CLI ile kurulum işlemleri ve pluginlerin projelere dahil edilmesi de (hazır şablonlar da dahil) oldukça pratik hale gelmiş durumda. Bu yazıda CLI’in kurulum ve kullanımına değinecek ve nasıl örnek projeler oluşturabileceğimize bakacağız.

Vue-CLI

Vue CLI (@vue/cli), Vue projeleri için standart bir uygulama geliştirme zemini sunar. Elbette bunda Vue Cli’in eklenti tabanlı (plugin-based architecture) mimariye sahip olmasının oldukça büyük etkisi var. Bu eklentiler uyum içerisinde çalıştırılır ve böylelikle yapılandırmalarla uğraşmak, kendi kendini tekrar eden işlemlerle vakit kaybetmek yerine uygulamaya geliştirmeye odaklanabiliriz. Aynı kolaylık ve esneklik uygulama kapsamını genişletme süreçleri için de söz konusudur.

Vue-CLI (3.x) Kullanımı

@vue/cli hızlı bir şekilde Vue.js uygulamaları geliştirmemize yardımcı olan ve ihtiyaç duyabileceğimiz tüm moden geliştirme araçlarını barındıran bir geliştirme aracıdır. Bu kapsamlara sahiptir1:

  • @vue/cli ile etkileşimli proje iskeleti,
  • @vue/cli + @vue/cli-service-global aracılığıyla, sıfır yapılandırma ve hızlı prototipleme,
  • @vue/cli-service ile işlem bağımlılıklarının yürütülmesi,
    • Yükseltme işlemleri,
    • Webpack üzerine geliştirme,
    • Config yapılandırmaları,
    • Eklentiler aracılığıyla uygulama genişletme.
  • Front-end ekosistemindeki en iyi ve zengin geliştirme ortamı,
  • Vue.js projeleri oluşturmak ve yönetmek için tam bir grafik kullanıcı arayüzü.

Vue CLI Bileşenleri

Vue CLI birkaç ek bileşenden oluşur.

CLI

@vue/cli global olarak yüklenmiş bir NPM paketidir ve terminal aracılığıyla vue komutlarının işleme alınmasını sağlar. Komutlar sayesinde kolaylıkla yeni projeler oluşturulabilir (cerate), fikirler prototipler haline getirilebilir (serve). Ek olarak, terminalin yanı sıra, Vue UI sayesinde (ui) projeler bir trafik arayüzü üzerinden de işleme alınabilmektedir.

CLI Service

CLI Service (@vue/cli-service) geliştirme işlemlerinde kullanılır. Lokal olarak CLI (@vue/cli) aracılığıyla oluşturulan (create) her projede yer alan bir npm paketidir. CLI Service webpack ve webpack-dev-server üzerine yapılandırılır ve şunları içerir:

  • Çekirdek servis CLI eklentileri (plugins) yükler,
  • Çoğu uygulama için optimize edilmiş dahili web paketi yapılandırmasını yapar,
  • Proje içerisinde yer alan vue-cli-service basit serve, build ve inspect komutlarıyla birlikte gelir.

CLI Plugins

CLI Plugins, npm paketleri olarak opsiyonel olarak sunulan Babel/TypeScript, ESLint entegrasyonu, unit testing ve end-to-end testing gibi özelliklerden oluşur. Bir Vue CLI eklentisi @vue/cli-plugin- (ön tanımlı eklentiler) veya vue-cli-plugin- (diğer eklentiler için) şeklinde ayırt edilebilir. Proje içeriğinde, vue-cli-service binary dosyası çalıştırıldığında, projeye ait package.json içeriğinde listelenen tüm CLI Plugins otomatik bir şekilde işleme alınır. Elbette eklenti kullanımı proje oluşturma aşamasından sonra da ele alınabilir ve tekrar kullanılabilir halde başka projelere aktarılabilirler.

Vue CLI Kurulumu

Vue CLI Node.js versiyon 8.9 veya üzeri (8.11.0+ tavsiye edilir) gerektirir ve şu komutlar aracılığıyla global olarak sisteme kurulabilir:

npm install -g @vue/cli
# ya da
yarn global add @vue/cli

Eğer, Vue CLI @vue/cli yerine vue-cli paketi kurulu ise (3.x ile birlikte değişiklik oldu) önceki paketi npm uninstall vue-cli -g veya yarn global remove vue-cli (bkz. YARN Nedir?) ile kaldırıp yeni paketi kurmanız gerekmektedir.

Kurulumun başarıyla tamamlanmasının ardından vue komutu ile vue binary erişimi sağlayabiliriz. Örnek olarak kurulu Vue CLI sürümünü kontrol edelim:

vue --version

Vue CLI Komutları

Vue CLI ile gerçekleştirebileceğimiz işlemlere, kullanabileceğimiz komutlara adım adım bakalım. İlk komutumuz serve ve build. Çünkü, Vue serve ve vue build komutları ile herhangi bir konfigürasyon işlemiyle uğraşmadan, tek bir *.vue (single-file component) ya da *.js dosyasıyla hızlı bir şekilde prototip oluşturabiliriz2.

Yukarıda bahsi geçen işlemde ön tanımlı olarak main.js, index.js, App.vue veya app.vue isimlerine bakılır. Elbette komutu ilgili dosya dizininde işleme almamız gerekmekte. Ön tanımlı dosya isimlerinin tercih edilmediği durumlarda dosya ismi ayrıca belirtilmelidir. Hemen bir örnek işlem gerçekleştirelim. Şu içeriğe sahip bir App.vue dosyamız olsun:

<template>
  <h1>Hello World!</h1>
</template>

vue serve

Terminal üzerinden dosyanın bulunduğu dizine geçip vue serve komutunu çalıştırdığımızda development server başlatılacak ve bize uygulamanın çalıştırıldığı URI döndürülecektir. Örneğin:

  App running at:
  - Local:   http://localhost:8080/
  - Network: http://192.168.1.3:8080/

Belirtilen adres üzerinden uygulamaya eriştiğimizde, açılan sayfanın kaynak kodunun aşağıdaki gibi olduğunu görebilirsiniz:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Vue CLI App</title>
  <link href="/app.js" rel="preload" as="script"></head>
  <body>
    <div id="app"></div>
  <script type="text/javascript" src="/app.js"></script></body>
</html>

Diğer yandan, bulunduğumuz dizinde de node_modules klasörü oluşturulmuş ve eğer var ise ilgili paketler de dahil edilmiş olacaktır. App.vue yerine farklı bir dosya ismi kullanmış olsaydık (örneğin newComponent.vue) komutumuzu şu şekilde uygulamamız gerekirdi:

vue serve newComponent.vue

Unutmadan, vue serve komutu vue create komutuyla aynı ön tanımlı kurulum ayarlarını (webpack, babel, postcss & eslint) kullanır.

vue build

Uygulama production için yapılandırılır ve işlemin tamamlanmasının ardından node_modules klasörünün yanı sıra dist klasörü ve klasör içerisinde de uygulamanın build edilmiş hali yer alır. Ayarlar serve komutuyla aynıdır. vue build komutu beraberinde -t (app | lib | wc | wc-async, ön tanımlı: app) ile hedef, -n (lib | web-component, ön tanımlı: dosya adı) ile ad, -d (çıktı yolu, ön tanımlı: dist) ile çıktının işleneceği klasör ifadelerini alabilir.

Vue Create

vue create

Yeni bir proje oluşturmak istediğimizde vue create komutunu bir argüman () ile birlikte kullanırız. Örneğin, hello world adında bir uygulama oluşturalım.

vue create hello-world

Komutu uygulamamızın ardından bizden prompt aracılığıyla preset seçimleri (babel, eslint, el yordamı ile yapılandırma gibi) yapmamız istenecek. Aşağı-yukarı tuşları ile seçenekler arasında gezinebilir, uygulanmasını istediğimiz seçimler için Enter tuşu ile devam edebiliriz. Seçimlerin tamamlanmasının ardından, onay vererek yapılandırma sürecini belirtilen ayarlar doğrultusunda başlatabiliriz.

Yaklaşık 1 dakikalık bir sürede, node_modules, public, src klasörlerinin ve babel.config.js, package.json dosyalarının oluşturulmasıyla birlikte, yapılandırma işlemi tamamlanacaktır. Ardından serve komutu ile (development server) uygulamamızı tarayıcı aracılığıyla görüntüleyebiliriz.

cd hello-world
yarn serve

Build işlemi için ise yarn build komutunu kullanabiliriz. Tüm bu işlemleri vue ui aracılığıyla da oluşturmamız mümkün. Bunun için vue ui komutunu kullanmamız yeterli.

Vue Create

Genel olarak http://localhost:8000/project/select üzerinden görüntülenecek GUI ile oluşturulan projeleri görüntüleyebilir, yeni projeler oluşturabilir ve proje ayarlarını içe aktarabiliriz.

vue add

vue create komutunu kullandığımızda bazı eklentilerin (plugin) yapılandırma sürecinde ön yüklendiğinden bahsetmiştim. Bu sürecin tamamlanmasının ardından, projenin ilerleyişine istediğimiz zaman yeni eklentileri de çalışma alanımıza dahil edebilmekteyiz. Bu amaçla kullandığımız komutumuz ise vue add. Hemen örnek olarak bir plugini çalışma alanımıza dahil edelim.

vue add @vue/eslint

Yukarıdaki komutu uyguladığımızda vue için oluşturulmuş olan eslint eklentisini çalışma alanımıza dahil etmiş oluruz. Unutmadan ekleyeyim, vue add komutu sadece Vue CLI eklentileri için tasarlanmıştır. Dolayısıyla npm paketlerinin yapılandırılması gibi özellikler sunmaz. Bu gibi gereksinimleri yine paket yönetici aracılığıyla karşılamanız gerekir. Eklenti tanımlamalarında kısaltmalar kullanılabilir. Örneğin, eslint eklentisinin tam tanımı @vue/cli-plugin-eslint şeklindedir. Resmi olmayan bir uygulama için de yine kısaltmalar kullanılabilir. vue add vue-cli-plugin-apollo ve vue add apollo aynı eklentiyi ifade etmektedir.

Eklentiler ile ilgili diğer notları Plugins and Presets başlığı altında görüntüleyebilirsiniz3.

vue init

Hazır yapılandırmaları / şablonları (template) kullanarak projeler geliştirmek istediğimizde vue init komutundan faydalanabiliriz. Genel kullanımı şu şekildedir:

vue init [options] <template> <app-name>

Uzak template bağlantıları için (örneğin bir git clone) ise @vue/cli-init eklentisinin çalışma alanına dahil edilmesi (add) gerekmektedir. Webpack, PWA, Webpack-simple, Simple, Browserify ve Browserify-simple gibi hazır şablonlara vuejs-templates4 üzerinden ulaşabilirsiniz.

Son Notlar

Vue CLI ile ilgili bahsi geçen konular dışında da pek çok detay mevcut. Başlangıç aşamasında çok ihtiyaç duymayacağımızı düşünerek bu yazıya dahil etmedim. Ancak, yeri geldikçe ilgili konular altında ve elbette yine bu sayfaya güncelleme olarak dahil etmeye çalışacağım. Eğer, ilgili tüm bilgileri görüntülemek isterseniz elbette Vue dökümantasyonu5 muhtemel sorularınıza dair tüm cevaplara sahiptir. Ayrıca sorularınız olursa, yorum olarak iletmeniz durumunda yazıya dahil ederim.