Browsererify ile nasıl küçültülmüş çıktı elde edilir?


90

Browsererify kullanmaya yeni başladım , ancak küçültülmüş çıktıyı nasıl dağıtacağıma dair belgeleri bulamıyorum.

Bu yüzden şöyle bir şeye bakıyorum:

$> browserify main.js > bundle.js --minified

9
Küçültme, tarayıcının kapsamı dışındadır, çıktısını bir minifier aracılığıyla çalıştırmanız gerekir.
generalhenry

Yanıtlar:


126

Uglifyjs aracılığıyla aktarın:

 browserify main.js | uglifyjs > bundle.js

Bunu aşağıdaki gibi npm kullanarak kurabilirsiniz:

 npm install -g uglify-js

3
Bunu grunt browsererify / watchify görevi ile nasıl yapabilirim?
Greg Ennis

1
Grunt kullanıyorsanız, bunu iki adımda yapmanızı tavsiye ederim. Önce browsererify ile derleyin ve ardından küçültün. Bunun avantajı, kaynak haritalarıyla bir geliştirme yapınız ve her şeyi ortadan kaldıran bir üretim yapınız olmasıdır.
topek

Evet, sonunda yaptığım şey bu. Aslında 3 adımdır, ara dosyayı temizlemeniz gerekir. Teşekkürler!
Greg Ennis

8
ve ya çirkinleştirilmiş dosyalarım için bir kaynak haritası istersem - bu "tarayıcı doğrulama" öncesindeki koda işaret eder?
Thomas Deutsch

3
@ThomasDeutsch Bunun için bir eklenti yaptım .
Ben

21

3.38.x itibariyle benim kullanabilirsiniz minifyify Paketinizi küçültmek için eklenti ve hala kullanılabilir sourcemaps var. Bu diğer çözümlerle mümkün değildir - yapabileceğiniz en iyi şey, sıkıştırılmamış pakete geri dönmektir. Haritaları ayrı kaynak dosyalarınıza kadar küçültün (evet, kahve yazısına bile!)


1
Tarayıcı doğrulama sürüm 9'a kadar desteklediğini söylüyor. Browserify şu anda 11.0.1'de. Bunu destekleyecek mi?
cchamberlain

uglifyify benim için iyi bir yedek olarak çalışıyor gibi görünüyor
Brett Zamir

15

Veya "size Uglify'nin" sıkıştırma "dönüşümünü Browserify tarafından işlenmeden önce uygulama avantajı sağlayan uglifyify dönüşümünü kullanın , yani koşullu gereksinimler için ölü kod yollarını kaldırabilirsiniz."


Yine de en üstteki cevapta gösterilen çirkin boruyu kullanmayı gerektirir. Bunu doktorlarının başında söylüyorlar.
carlin.scott

11

Yeni inşa süreçlerinin nasıl inşa edileceğini araştırmak için birkaç saat harcadıktan sonra, başkalarının benim yaptığım şeyden faydalanabileceğini düşündüm. Google'da üst sıralarda göründüğü için bu eski soruyu yanıtlıyorum.

Kullanım durumum, OP'nin istediğinden biraz daha karmaşık. Üç yapı senaryom var: geliştirme, test etme, üretim. Profesyonel geliştiricilerin çoğu aynı gereksinimlere sahip olacağından, orijinal sorunun kapsamının ötesine geçmenin mazur görüleceğini düşünüyorum.

Geliştirme aşamasında , bir JavaScript dosyası her değiştiğinde kaynak haritayla sıkıştırılmamış bir paket oluşturmak için watchify kullanıyorum. Çirkinleştirme adımını istemiyorum çünkü tarayıcıya alt sekme atıp yenile tuşuna basmadan önce yapının bitmesini istiyorum ve yine de geliştirme sırasında herhangi bir faydası yok. Bunu başarmak için kullanıyorum:

watchify app/index.js  --debug -o app/bundle.js -v

Test için , üretimle aynı kodu (örneğin çirkinleştirilmiş) istiyorum ama aynı zamanda bir kaynak haritası da istiyorum. Bunu şununla başarıyorum:

browserify app/index.js  -d | uglifyjs -cm -o app/bundle.js      --source-map "content=inline,filename='bundle.js',url='bundle.js.map'"

Üretim için kod çirkinleştirilerek sıkıştırılır ve kaynak haritası yoktur.

browserify app/index.js  | uglifyjs -cm > app/bundle.js

Notlar:

Bu talimatları Windows 7, MacOS High Sierra ve Ubuntu 16.04'te kullandım.

Artık bakım yapılmadığı için minifyify kullanmayı bıraktım.

Paylaştığımdan daha iyi yollar olabilir. Tarayıcı ile birleştirmeden önce tüm kaynak dosyaları çirkinleştirerek üstün sıkıştırma elde etmenin mümkün olduğunu okudum. Benden daha fazla harcayacak vaktin varsa, bunu araştırmak isteyebilirsin.

Halihazırda watchify, uglify-js veya browsererify kurulu değilse, bunları npm ile kurun:

npm install -g browserify
npm install -g watchify
npm install -g uglify-js

Yüklü eski sürümleriniz varsa, yükseltmenizi tavsiye ederim. Özellikle uglify-js, Google'da ortaya çıkan pek çok bilgiyi geçersiz kılan komut satırı argümanlarında son derece önemli bir değişiklik yaptılar.


4

Bir kaynak haritayı korurken küçültmek için artık eklentileri kullanmaya gerek yok:

browserify main.js --debug | uglifyjs --in-source-map inline --source-map-inline > bundle.js

1

Ben gibi terser ES6 + ve bazı iyi comporession desteği de vardır.

browserify main.js | terser --compress --mangle > bundle.js

Global olarak yükleyin:

 npm i -g terser
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.