Modlar ve Ortam Değişkenleri
Modlar
Mod, Vue CLI projelerinde önemli bir kavramdır. Varsayılan olarak üç mod vardır:
development
,vue-cli-service serve
tarafından kullanılırtest
,vue-cli-service test:unit
tarafından kullanılırproduction
,vue-cli-service build
vevue-cli-service test:e2e
tarafından kullanılır
Bir komut için varsayılan modun üzerine yazmak için --mode
seçenek bayrağını geçebilirsiniz. Örneğin, build komutunda geliştirme değişkenlerini kullanmak istiyorsanız:
vue-cli-service build --mode development
vue-cli-service
çalıştırılırken, ortam değişkenleri tüm ilişkin dosyalardan
yüklenir. Eğer NODE_ENV
değişkenini içermezlerse, bu durumda uygun şekilde ayarlanır.
Örneğin,
NODE_ENV
üretim modunda"production"
, test modunda"test"
ve diğer durumlarda varsayılan olarak"development"
olarak ayarlanacaktır. — Vue CLI Dokümantasyonu
Sonrasında NODE_ENV
, uygulamanızın hangi ana modda çalıştığını belirleyecektir - geliştirme, üretim veya test - ve sonuç olarak hangi tür webpack yapılandırmasının oluşturulacağını belirler.
Örneğin, NODE_ENV
"test" olarak ayarlandığında, Vue CLI, birim testlere yönelik kullanılmak ve optimize edilmek için tasarlanmış bir webpack yapılandırması oluşturur.
Benzer şekilde, NODE_ENV=development
, hızlı yeniden oluşturmalara olanak tanımak için HMR'yi etkinleştiren ve varlıkları hash'lemeyen veya tedarikçi paketleri oluşturmayan bir webpack yapılandırması oluşturur.
vue-cli-service build
çalıştırdığınızda, NODE_ENV
her zaman "production" olarak ayarlanmalıdır, böylece dağıtıma hazır bir uygulama elde edilir, dağıtım yaptığınız ortamdan bağımsız olarak.
::: warning NODE_ENV
Ortamınızda varsayılan bir NODE_ENV
varsa, bunu kaldırmalı veya vue-cli-service
komutlarını çalıştırırken açıkça NODE_ENV
ayarlamalısınız.
:::
Ortam Değişkenleri
Ortam değişkenlerini proje kökünüze aşağıdaki dosyaları yerleştirerek belirtebilirsiniz:
.env # her durumda yüklenir
.env.local # her durumda yüklenir, git tarafından göz ardı edilir
.env.[mode] # yalnızca belirtilen modda yüklenir
.env.[mode].local # yalnızca belirtilen modda yüklenir, git tarafından göz ardı edilir
Bir env dosyası, ortam değişkenlerinin anahtar=değer çiftlerini içerir:
FOO=bar
VUE_APP_NOT_SECRET_CODE=some_value
::: warning Uygulamanızda herhangi bir gizli bilgi (örneğin özel API anahtarları) saklamayın!
Ortam değişkenleri, yapı içine gömülmüştür; bu, herkesin uygulamanızın dosyalarını inceleyerek bunları görebileceği anlamına gelir. :::
Sadece NODE_ENV
, BASE_URL
ve VUE_APP_
ile başlayan değişkenlerin, webpack.DefinePlugin
ile istemci paketi içine statik olarak gömüleceğini unutmayın. Bu, aynı isimde olabilecek özel bir anahtarın makinelerde kazara açığa çıkmasını önlemek içindir.
Daha ayrıntılı env ayrıştırma kuralları için lütfen dotenv belgelerine başvurun. Ayrıca, değişken genişletme için dotenv-expand kullanıyoruz (Vue CLI 3.5+ sürümünde mevcuttur). Örneğin:
FOO=foo
BAR=bar
CONCAT=$FOO$BAR # CONCAT=foobar
Yüklenmiş değişkenler, tüm vue-cli-service
komutlarına, eklentilere ve bağımlılıklara sunulacaktır.
::: tip Env Yükleme Öncelikleri
Belirli bir mod için bir env dosyası (örneğin, .env.production
), genel bir dosyadan (örneğin, .env
) daha yüksek önceliğe sahiptir.
Ayrıca, Vue CLI çalıştırıldığında zaten mevcut olan ortam değişkenleri en yüksek önceliğe sahip olacaktır ve .env
dosyaları ile üst üste binmeyecektir.
.env
dosyaları, vue-cli-service
başlangıcında yüklenir. Değişiklik yaptıktan sonra hizmeti yeniden başlatın.
:::
Örnek: Staging Modu
Aşağıdaki .env
dosyasına sahip bir uygulamamız olduğunu varsayalım:
VUE_APP_TITLE=My App
Ve aşağıdaki .env.staging
dosyasına:
NODE_ENV=production
VUE_APP_TITLE=My Staging App
vue-cli-service build
,.env
,.env.production
ve varsa.env.production.local
dosyalarını yükleyerek üretim uygulamasını derler;vue-cli-service build --mode staging
, .env,
.env.stagingve varsa
.env.staging.local` dosyalarını kullanarak, staging modunda bir üretim uygulaması derler.
Her iki durumda da, NODE_ENV
nedeniyle uygulama üretim uygulaması olarak derlenir, ancak staging sürümünde, process.env.VUE_APP_TITLE
farklı bir değer ile üzerine yazılır.
İstemci Tarafı Kodunda Env Değişkenlerini Kullanma
Uygulama kodunuzda env değişkenlerine erişebilirsiniz:
console.log(process.env.VUE_APP_NOT_SECRET_CODE)
Derleme sırasında, process.env.VUE_APP_NOT_SECRET_CODE
karşılık gelen değer ile değiştirilir. VUE_APP_NOT_SECRET_CODE=some_value
durumunda, "some_value"
ile değiştirilir.
VUE_APP_*
değişkenlerine ek olarak, her zaman uygulama kodunuzda bulunacak iki özel değişken vardır:
NODE_ENV
- bu, uygulamanın çalıştığımoda
bağlı olarak"development"
,"production"
veya"test"
değerlerinden biri olacaktır.BASE_URL
- bu,vue.config.js
dosyasındakipublicPath
seçeneği ile bağlantılıdır ve uygulamanızın dağıtıldığı temel yoldur.
Çözümleme yapılan tüm env değişkenleri, HTML - Araya Girme
bölümünde tartışıldığı gibi public/index.html
içinde kullanılabilir olacaktır.
::: tip
vue.config.js
dosyanızda hesaplanmış env değişkenlerine sahip olabilirsiniz. Yine de VUE_APP_
ile ön eklenmeleri gerekir. Bu, sürüm bilgileri için kullanışlıdır.
process.env.VUE_APP_VERSION = require('./package.json').version
module.exports = {
// config
}
:::
Sadece Yerel Değişkenler
Bazen kod tabanına dahil edilmemesi gereken env değişkenlerine sahip olabilirsiniz, özellikle projeniz genel bir depoda barındırılıyorsa. Bu durumda, bunun yerine bir .env.local
dosyası kullanmalısınız. Yerel env dosyaları varsayılan olarak .gitignore
dosyasında göz ardı edilir.
.local
, mod spesifik env dosyalarına da eklenebilir, örneğin .env.development.local
geliştirme sırasında yüklenir ve git tarafından göz ardı edilir.