Lebih
Bagaimana untuk bundel Sudut aplikasi untuk produksi
Apa metode terbaik untuk bundel Sudut (versi 2, 4, 6, ...) untuk produksi pada web server.
Harap sertakan Sudut versi dalam jawaban sehingga kami dapat melacak baik ketika bergerak untuk rilis berikutnya.
337
11
2.x, 4.x, 5.x, 6.x, 7.x, 8.x
(Ketangkasan) dengan Sudut CLIMantan Setup
npm install-g @sudut/cli
ng baru projectFolder
menciptakan aplikasi baruBundling Langkah
ng membangun --prod
(jalankan di command line ketika direktoriprojectFolder
)bendera
prod
bundel untuk produksi (lihat Sudut dokumentasi untuk daftar pilihan termasuk dengan produksi bendera).bagi saya di dist/*; melakukan brotli $i; dilakukan
bundel yang dihasilkan oleh default untuk projectFolder/dist(/$projectFolder 6)
Output
Ukuran dengan Sudut
8.2.11
dengan CLI `8.3.13 ' dan pilihan CSS tanpa Sudut routingdist/utama-[es-versi].[hash].js
aplikasi Anda dibundel [ ES5 ukuran: 188 KB untuk Sudut baru CLI aplikasi kosong, 44 KB dikompresi].dist/polyfill-[es-versi].[hash].bundle.js
the polyfill dependensi (@sudut, RxJS...) dibundel [ ES5 size: 122 KB untuk Sudut baru CLI aplikasi kosong, 36 KB dikompresi].dist/index.html
entry point dari aplikasi anda.dist/runtime-[es-versi].[hash].bundle.js
webpack loaderdist/gaya.[hash].bundel.css
stylePenyebaran
Anda bisa mendapatkan preview dari aplikasi anda menggunakan
ng melayani --prod
perintah yang dimulai lokal server HTTP seperti yang aplikasi dengan produksi file dapat diakses dengan menggunakan http://localhost:4200.Untuk penggunaan produksi, anda harus mengerahkan semua file dari
dist
folder di HTTP server pilihan anda.2.0.1 Final
menggunakan Gulp (Naskah - Target: ES5)Mantan Setup
npm install
(run di cmd ketika direcory adalah projectFolder)Bundling Langkah-Langkah
npm menjalankan bundel
(run di cmd ketika direcory adalah projectFolder)bundel yang dihasilkan untuk projectFolder / kumpulan /
Output
bundles/dependencies.bundle.js
[ ukuran: ~ 1 MB (sekecil mungkin) ]bundles/app.bundle.js
[ size: tergantung pada proyek anda, saya adalah ~ 0.5 MB ]Struktur File
dist-systemjs.config.js
tag setelah bundel kategori masih akan memungkinkan program untuk menjalankan tapi ketergantungan bundel akan diabaikan dan dependensi akan dimuat darinode_modules
folder.Yang terbaik yang bisa saya lakukan belum :)
Sudut 2 dengan Webpack (tanpa pengaturan CLI)
1 - tutorial oleh Angular2 tim
Yang Angular2 tim yang diterbitkan tutorial untuk menggunakan Webpack
Aku dibuat dan ditempatkan file dari tutorial di GitHub benih proyek. Sehingga anda dapat dengan cepat mencoba alur kerja.
Petunjuk:
npm install
npm mulai. Untuk pembangunan. Ini akan membuat virtual "k" folder yang akan livereloaded di alamat localhost.
npm menjalankan membangun. Untuk produksi. "Ini akan membuat fisik "k" map versi dari dapat dikirim ke webserver. Dist folder adalah 7.8 MB tapi hanya 234KB adalah benar-benar diperlukan untuk memuat halaman di web browser.
2 - Webkit starter kit
Ini Webpack Starter Kit menawarkan beberapa pengujian fitur dari tutorial di atas dan tampaknya cukup populer.
Sudut 2 alur kerja produksi dengan SystemJs pembangun dan gulp
Sudut.io memiliki quick start tutorial. Aku disalin tutorial ini dan diperpanjang dengan beberapa tegukan tugas untuk bundling semuanya ke folder dist yang dapat disalin ke server dan bekerja seperti itu. Saya mencoba untuk mengoptimalkan segala sesuatu untuk bekerja dengan baik pada Jenkis CI, jadi node_modules dapat di-cache dan don't perlu disalin.
Kode sumber dengan contoh aplikasi di Github: https://github.com/Anjmao/angular2-production-workflow
Langkah-langkah untuk produksi
Node: Sementara anda selalu dapat membuat anda sendiri membangun proses, tapi saya sangat merekomendasikan untuk menggunakan sudut-cli, karena itu memiliki semua yang dibutuhkan alur kerja dan bekerja dengan sempurna sekarang. Kita sudah menggunakannya dalam produksi dan don't memiliki masalah dengan sudut-cli di semua.
Sudut CLI 1.x.x (Bekerja dengan Sudut 4.x.x, 5.x.x)
Ini mendukung:
Pengaturan Awal
Anda dapat menambahkan
--style=scss
untuk MERENDAHKANNYA .scss dukungan.Anda dapat menambahkan
--ng4
untuk menggunakan Sudut 4, bukan dari Sudut 2.Setelah membuat project, CLI akan secara otomatis menjalankan
npm install
untuk anda. Jika anda ingin menggunakan Benang sebaliknya, atau hanya ingin melihat kerangka proyek tanpa install, lihat bagaimana melakukannya di sini.Langkah-Langkah Bundle
Di dalam folder proyek:
<menyerang>Pada versi saat ini, anda perlu untuk menentukan `--aot` secara manual, karena hal ini dapat digunakan dalam pengembangan mode (meskipun itu's tidak praktis karena kelambatan).</strike>Ini juga melakukan AoT kompilasi bahkan lebih kecil bundel (tidak ada Sudut compiler, sebaliknya, yang dihasilkan compiler output). Bundel yang jauh lebih kecil dengan AoT jika anda menggunakan Sudut 4 sebagai kode yang dihasilkan lebih kecil. Anda dapat menguji aplikasi anda dengan AoT dalam pengembangan mode (sourcemaps, tidak ada minification) dan AoT dengan menjalankan
ng membangun --aot
.Output
Output default dir
./dist
, meskipun hal ini dapat berubah dalam./sudut-cli.json
.Deployable File
Hasil dari membangun langkah adalah sebagai berikut:
(Catatan:
<content-hash>
mengacu pada hash / sidik jari dari isi file yang's dimaksudkan untuk menjadi sebuah cache penghilang jalan, hal ini dimungkinkan karena Webpack menulisscript
kategori dengan sendirinya)./dist/aset
File yang disalin apa adanya dari./src/aset/**
./dist/index.html
Dari./src/index.html
, setelah menambahkan webpack script itu Sumber file template ini dapat dikonfigurasi dalam./sudut-cli.json
./dist/inline.js
Kecil webpack loader / polyfill./dist/utama.<content-hash>.bundle.js
Utama .js file yang berisi semua .script js yang dihasilkan / impor./dist/gaya.<content-hash>.bundle.js
Ketika anda menggunakan Webpack loader untuk CSS, yang merupakan CLI jalan, mereka dimuat melalui JS di siniDalam versi ini juga dibuat gzip versi untuk memeriksa ukuran mereka, dan
.peta
sourcemaps file, tapi ini tidak lagi terjadi karena orang-orang terus bertanya untuk menghapus.File Lainnya
Dalam beberapa kesempatan lain, anda mungkin menemukan tidak diinginkan lainnya file/folder:
./keluar-tsc/
Dari./src/tsconfig.json
'soutDir
./keluar-tsc-e2e/
Dari./e2e/tsconfig.json
'soutDir
./dist/ngfactory/
Dari AoT compiler (tidak dikonfigurasi tanpa forking CLI sebagai beta 16)Saat ini saya masih menemukan Ahead-of-Time Kompilasi masak seperti resep terbaik untuk produksi bundling. Anda dapat menemukannya di sini: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html
Pengalaman saya dengan Sudut 2 sejauh ini adalah bahwa AoT menciptakan terkecil membangun dengan hampir tidak ada waktu loading. Dan yang paling penting sebagai pertanyaan di sini tentang - anda hanya perlu mengirimkan beberapa file untuk produksi.
Hal ini tampaknya karena Sudut compiler tidak akan dikirim dengan produksi yang membangun template yang disusun "Sebelumnya". It's juga sangat keren untuk melihat template HTML markup berubah untuk javascript petunjuk bahwa akan sangat sulit untuk membalikkan insinyur yang asli ke HTML.
I've membuat video sederhana di mana saya menunjukkan download ukuran, jumlah file dll. untuk Sudut 2 aplikasi di dev vs AoT membangun - yang dapat anda lihat di sini:
https://youtu.be/ZoZDCgQwnmQ
Anda'll menemukan source code yang digunakan dalam video berikut ini:
https://github.com/fintechneo/angular2-templates
Anda dapat menggunakan sudut aplikasi pada
github
menggunakan sudut-cli-ghpagescheck out link untuk menemukan cara untuk menyebarkan menggunakan cli.
dikerahkan web akan disimpan dalam beberapa cabang di
github
biasanyagh-halaman
penggunaan clone git branch dan menggunakannya seperti website statis di server anda
"Terbaik" tergantung pada skenario. Ada saat-saat ketika anda hanya peduli tentang hal terkecil yang mungkin bundel tunggal, tetapi dalam aplikasi besar anda mungkin harus mempertimbangkan lazy loading. Di beberapa titik itu menjadi tidak praktis untuk melayani seluruh aplikasi sebagai satu bundel.
Dalam kasus terakhir Webpack umumnya cara terbaik karena mendukung kode membelah.
Untuk satu bundel saya akan mempertimbangkan Rollup, atau Penutupan compiler jika anda merasa berani :-)
Saya telah membuat sampel dari semua Sudut bundlers I've pernah digunakan di sini: http://www.syntaxsuccess.com/viewarticle/angular-production-builds
Kode dapat ditemukan di sini: https://github.com/thelgevold/angular-2-samples
Sudut versi: 4.1.x
Silakan coba berikut ini perintah CLI pada saat ini proyek direktori. Ini akan membuat folder dist bundel. jadi, anda dapat meng-upload semua file-file di dalam folder dist untuk penyebaran.
ng membangun --prod --aot --dasar-href.
Hanya saja pengaturan sudut 4 dengan webpack 3 dalam satu menit anda pengembangan dan produksi ENV bundel akan menjadi siap tanpa masalah cukup ikuti langkah di bawah ini github doc
https://github.com/roshan3133/angular2-webpack-starter