Blockly, yüzün üzerinde TypeScript dosyasından oluşur. Bunlar kullanılmadan önce TypeScript derleyicisi tsc
tarafından JavaScript'e derlenmelidir. Bu, yerel test için uygun olan eşit sayıda .js
dosyası oluşturur ancak bu kadar çok sayıda dosyanın internet üzerinden yüklenmesi son kullanıcılar için yavaş bir deneyimdir. Blockly'nin daha hızlı yüklenmesi için Closure Compiler kullanılır. Bu derleyici, dosyaları sıkıştırıp (küçültüp) toplam boyutu sıkıştırılmamış dosyaların boyutunun yarısından daha az olan yarım düzine dosyada ("paketler" veya "parçalar") birleştirir.
Bu işlem sırasında, tüm tarayıcılarla uyumlu olmayabilecek en yeni ECMAScript özelliklerini kullanan kod, genellikle en yaygın kullanılan tarayıcılarla uyumlu olan ES6'ya dönüştürülür. Bu nedenle, son kullanıcılarınıza yalnızca küçültülmüş kodu sunmanız önemlidir.
google/blockly deposu yalnızca kaynak kodunu içerir. Daha önce derleme ürünlerini de içeriyordu ancak 2019'dan beri küçültülmüş paketler blockly
NPM paketi olarak yayınlanıyor ve 2022'den beri de .tgz
dosyası olarak her GitHub sürümüne ekleniyor. Bu nedenle, Blockly'nin kendisinde (özellikle core
, blocks
, generators
veya msg
dizinlerindeki dosyalarda) değişiklik yapmıyorsanız Blockly'yi derlemenize gerek yoktur.
Blockly'nin derlenmesi, test edilmesi ve yayınlanması süreci, Gulp görevlerini çalıştırmak için npm komut dosyaları kullanılarak otomatikleştirilir. Bu sayfada, temel komut dosyaları ve her birinin işlevi açıklanmaktadır.
Sıkıştırılmış ve Sıkıştırılmamış Mod
Blockly'yi doğrudan TypeScript derleyicisi tarafından oluşturulan ayrı .js
dosyalarından yüklemeye "sıkıştırılmamış mod" adı verilir. Bu, çeşitli yavaş derleme adımlarından kaçındığı için hızlı bir düzenleme-derleme-çalıştırma döngüsünü kolaylaştırır. Ayrıca, yürütülen JavaScript kodu neredeyse orijinal TypeScript kaynakları kadar okunabilir olduğundan hata ayıklamayı da kolaylaştırır ve kaynak haritalarına bağımlı olma ihtiyacını ortadan kaldırır.
Blockly'nin küçültülmüş paketlerden yüklenmesine "sıkıştırılmış mod" denir.
Bu, Blockly'yi başka bir paketin bağımlılığı olarak kullanırken yapılan değişiklikleri test etmenin en iyi yoludur. Çünkü bu yöntem, blockly
npm paketinin yayınlanmamış bir sürümünü test eder.
N.B.: Blockly deposunda, "uncompiled mode" (derlenmemiş mod) ve "compiled mode" (derlenmiş mod) terimlerinin sırasıyla "uncompressed mode" (sıkıştırılmamış mod) ve "compressed mode" (sıkıştırılmış mod) terimleriyle eş anlamlı olarak kullanıldığı bazı yerler vardır. Geçmişte Closure Compiler, kodu sıkıştırmak (küçültmek) için kullanıldığından bu kullanım mantıklıydı. Ancak artık sıkıştırılmamış modda bile TypeScript derleyicisine her zaman ihtiyaç duyuluyor. Bu nedenle, bu alternatif terminoloji kafa karıştırıcı olabilir ve önerilmez.
Hızlı Başlangıç
Yerel değişiklikler yaptıysanız ve bu değişikliklerin derlemeyi veya testleri bozmadığından emin olmak istiyorsanız
npm test
Blockly'yi oluşturmak ve test paketini çalıştırmak için.
Tarayıcıda yerel değişiklikleri test etmek istiyorsanız
npm start
Bu işlem, Blockly'yi derler ve Blockly'yi sıkıştırılmamış modda çalıştıran Blockly Playground'a yönlendiren bir web tarayıcısı açar.
core/
,blocks/
vegenerators/
klasörlerindeki değiştirilen tüm dosyalar otomatik olarak yeniden derlenir. Değişiklikleri görmek için tarayıcı sekmesini yeniden yükleyin.Blockly'nin yerel olarak değiştirilmiş sürümünü oluşturmak ve sıkıştırılmış modda başka bir npm paketinin bağımlılığı olarak test etmek için aşağıdaki komutu çalıştırın:
npm run package
Blockly paketini oluşturmak için
cd dist && npm link
npm'e derlenmiş dosyaları nerede bulacağını söylemek için ve ardından
cd
komutunu çalıştırmadan önce projenizin dizinine gidin.npm link blockly
Paketinizin, yayınlanan
blockly
paketi yerine Blockly'nin yeni derlenmiş sürümünü kullanmasını istiyorsanız.
Ayrıntılı Komut Dosyası Referansı
Bu bölümde, Blockly'nin package.json
dosyasındaki temel scripts
listelenmekte ve bunların ne yaptığı açıklanmaktadır.
Bu komut dosyaları iki yerde dosya oluşturur:
build/
alt dizinindeki dosyalar, yerel test için kullanılan veya derleme işlem hattının sonraki bölümleri tarafından alınan ara dosyalardır.dist/
alt dizinindeki dosyalar, yayınlanan npm paketinin içeriğini oluşturur.
İki dizin de blockly git deposunda izlenmiyor.
clean
npm run clean
, build/
ve dist/
dizinlerini silerek önceki derlemeleri temizler. Özellikle bir kaynak dosyasının yeniden adlandırılmasından kaynaklanan, anlaşılması zor derleme hatalarını düzeltmek için kullanışlıdır.
messages
npm run messages
, msg/json/
içindeki mesaj dosyalarını msg/messages.js
'de yapılan değişikliklerle günceller ve bu dosya her değiştirildiğinde çalıştırılmalıdır.
langfiles
npm run langfiles
, msg/json
içindeki mesaj dosyalarından build/msg/
içinde derlenmiş dil dosyaları oluşturur.
tsc
npm run tsc
, core/
, blocks/
ve generators/
dizinlerinin içeriklerinde TypeScript derleyicisini çalıştırır ve build/src/
dizinine ayrı .js
dosyaları çıkarır.
minify
npm run minify
, derlenen .js
dosyalarının nasıl parçalara (küçültülmüş paketler) bölüneceğini belirlemek için closure-make-deps
ve closure-calculate-chunks
işlemlerini çalıştırır. Ardından, parçaları aşağıdaki şekilde oluşturmak için closure-compiler
işlemini çalıştırır:
build/src/core/
içeriğidist/blockly_compressed.js
olur.build/src/blocks/
içeriğidist/blocs_compressed.js
olur.build/src/generators/javascript/
(build/src/generators/javascript.js
ile birlikte) içeriğidist/javascript_compressed.js
olur.- Aynı durum
dart
,lua
,php
vepython
için de geçerlidir.
Oluşturulan parçalar, Universal Module Definition ile uyumluluğu sağlamak için bir sarmalayıcı kullanır. Bu nedenle, pakete dahil edilmeden önce ek bir işleme gerek yoktur.
build
npm run build
, minify
ve langfiles
görevlerini çalıştırır. Bu işlem, Blockly oyun alanını sıkıştırılmış veya sıkıştırılmamış modda yüklemek için gereken her şeyi yapmalıdır.
package
npm run package
, clean
ve build
görevlerini çalıştırır ve ardından:
build/msg/
içindeki dosyalara UMD sarmalayıcısı uygular ve sarmalanmış sürümleridist/msg/
içine yerleştirir.dist/
'ya çeşitli ek destek dosyaları ekler. Uygun durumlarda UMD sarmalayıcılar kullanılır.
publish
npm run publish
, Blockly ekibi tarafından blockly
npm paketini yayınlamak için kullanılır. Google'ın dahili altyapısına bağlı olduğundan harici geliştiriciler için kullanışlı değildir.
lint
npm run lint
, sorunları bulmak için Blockly kaynak kodunun statik analizini yaparak ESLint'i çalıştırır.
test
npm test
(veya npm run test
), package
görevini ve ardından çeşitli otomatik testleri (ESLint'i çalıştırma dahil) çalıştırır. Bu test, Blockly deposuna çekme isteği olarak gönderilen tüm kodlarda çalıştırılmalı ve başarılı olmalıdır.