Ana içeriğe geç

PM2 ile transpilatörlerin kullanımı

Üretim Yolu

Kod tabanınızı paylaşmak, paketlemek veya dağıtmak istiyorsanız, genellikle saf eski Javascript (VanillaJS) kullanmak daha iyidir. Bu, kodunuzun ön işleme sürümüne sahip olacağınız ve ardından bir Javascript giriş noktasını çalıştıracağınız anlamına gelir.

Örneğin, olağan bir dizin yapısı şu şekilde görünecek:

├── src
├── dist
└── package.json

Burada src es6, CoffeeScript veya herhangi bir şey içerirken dist transpilasyon yapılmış Javascript'tir. Bu, PM2 ile kolayca ayarlanabilir çünkü yapılandırma olmadan Javascript'i başlatacaktır.

ipucu

İpucu: Geliştirme sırasında, kaynak kodunuzu dist dizininde transpilasyon yapmak için bir yapı sistemi kullanmak, dağıtım aşamasında işlerinizi kolaylaştıracaktır.

Ancak, kod yazarken, bu ayarlamayı daha zor hale getirebilir. İzlemek ve yeniden başlatmak istediğinizi varsayalım. İzlemek, transpilasyon yapmak ve yeniden başlatmak zorunda kalacaksınız. PM2 bir yapım sistemi ya da görev çalıştırıcısı değildir, bu nedenle ikinci yolu tercih etmenizi öneririz.


Geliştirme Yolu

Bu, bir üretim iş akışında iyi çalışabilir, ancak bunu önermeyiz. Kodu paketlemek daha güvenlidir, bu işlem script başlatma sürecini yavaşlatır ve küme modu mevcut olmayabilir.

Çalıştırma Yorumlayıcısı

PM2 ile transpilatörleri kullanmanın en kolay yolu çalıştırma yorumlayıcısını (exec_interpreter) geçersiz kılmaktır. Eğer bu değiştirilirse, kodunuz sadece fork_mode’da çalışacaktır (fork modları arasındaki farklar için burayı kontrol edin).

Bunu yapmak için, CLI üzerinden --interpreter seçeneğini veya json yapılandırması üzerinden exec_interpreter seçeneğini belirtin.

Coffee-script

#- npm install -g coffee-script
#- pm2 start --interpreter coffee index.coffee

Dosya değişikliklerinde yeniden başlatan bir daemonize edilmiş CoffeeScript için sadece --watch ekleyin.

Babel

#- npm install -g babel-cli
#- pm2 start --interpreter babel-node index.es6
tehlike

Unutmayın, bu komutların yalnızca fork_mode’da çalışacağını. PM2 kümesi çalıştırmak istiyorsanız, aşağıdaki alternatife bakın.

Require Kancası

Bu benim en sevdiğim seçenek. Transpilatörü kod içinde kaydederek standart Javascript olarak çalışacaktır. Bunun çoğu, aslında, node içlerinde require'ı değiştirir veya module'ü ayarlayarak gerekli script'in yorumlanmadan önce transpilasyonu yapılır (örnek babel veya coffee).

Bu çözüme daha çok bir hack olarak düşünülebilir. Script başlangıcını yavaşlatacağını aklınızda bulundurun.

Not: Bunu çalışır hale getirmek için, transpilasyon yapılmamış kaynağı dahil etmeden önce require kancasını çağıracak basit bir Javascript giriş noktası hazırlayın.

Coffee-script

# server.js
require('coffee/register');
require('./server.coffee');

Babel

require('babel-register');
require('./server.es6');

Daha fazla seçenek için babeljs belgesine göz atın.

Sonra, tek yapmanız gereken script'i pm2 start server.js ile başlatmaktır. Bu, node yorumlayıcısını kullanacağı için küme modu beklendiği gibi çalışacaktır.