GitBash angular build base-href sorunu

5 May

Angular projelerini production ortamına almak için “ng build –prod” komutu kullanılır.

ng build –prod

Bu komutu kullandığımızda üretilen index.html dosyasında bir base href etiketi oluşturulur.

<base href=”/”>

Eğer proje IIS gibi bir http server üzerindeki ana web site dizinden yayınlanıyorsa doğrudan çalışacaktır. Ancak site, ana web site altında bir alt klasörde çalışacak ise, (örneğin “Default Web Site/my-app”) base href etiketi, angular build işlemi sırasında belirlenebilmektedir. Bu durumda çalıştırılan komut şu şekilde olacaktır. (angular deployment)

ng build –base-href /my-app/ –prod

Bu durumda GitBash konsolunun index.html içerisinde oluşturduğu base href parametresi şu şekilde olmaktadır:

<base href=”C:/Program Files/Git/my-app”>

Bu sorun angular cli ile alakalı bir sorun değil, git bash ile alakalı bir sorundur. Bu sorunu gidermek için kullanılacak olan angular komutu aşağıdaki gibi olmalıdır:

ng build –base-href=”//my-app\\” –prod

 

Angular CLI Workspace Birimleri Module vs Library

23 Nis

Angular 6 ve sonrası sürümlerde Angular CLI workspace birimleri sayesinde geliştiricilere bir çalışma alanında birden fazla projede oluşturma imkanı sağlanmıştır. Bu bize birçok proje ve kütüphaneyi aynı çalışma ortamında barıdırma olanağı sunmuştur. Artık büyük uygulamaları küçük modüllere veya küçük uygulamalara bölerek geliştirme özgürlüğüne kavuşmuş oluyoruz. Örneğin ortak bir kullanıcı doğrulama modülünü diğer uygulamalara aktararak tekrar kullanabilme yeteneği kazandırabiliriz. Tekrar kullanılabilir modüller sayesinde kod tekrarları azaltılarak iş akışı kolaylaştırlabilmektedir.

Angular projelerinde kod tekrarlarını engellemek ve tekrar kullanılabilirliği arttırabilmek için modüller veya kütüphaneler kullanılabilir. Angular modüller ve kütüphaneler arasında nasıl bir fark olduğu merak konusudur.

Modüller (Module)

Bir projenin içinde bulunan uygulama bileşenlerini (Components) bir araya getirir. Modüller tüm bileşenlerini kendi kök dizininde barındırır. Bu sayede modül, kullanılmak üzere ihtiyaç duyulan yere aktarılabilir. Bu sayede modülün kullanıldığı uygulamanın modülün içinde olan biten süreci bilmesine gerek kalmaz.

Kütüphaneler (Library)

Proje modüllerinin bir çok projede kullanılma ihtiyacı bulunan şirketlerde, modül dizinlerinin projeden projeye taşınması biraz zahmetli olabilir. Ayrıca taşınan modülde yapılan değişikliğin tüm projelere tekrardan dağıtılması zor bir süreçtir. Geliştiricilerin birbirinden uzak ortamlarda bulunduğunda işler biraz karışabilir. Bu durumda modüllerin bir kütüphane haline getirilerek paketlenmesi gerekmektedir. Paketlenen modüllerin versiyonlanması ve npm gibi ortamlarda dağıtılması ile tekrar kullanılabilir kütüphanelerin dağıtımı sağlanmış olur.

Tek başına projeler geliştirenler için modüllerin taşınarak kullanılması daha uygun bir çözüm olabilir. Ancak şirket ortamlarında veya açık kaynak olarak dağıtılacak projelerde kütüphanelerin oluşturulması daha doğru bir yöntem olarak görülmektedir.

Bir sonraki yazıda görüşmek dileğiyle.