Mencari plugin kasar? Silakan kunjungi grunt-assemble.
(Perhatikan bahwa situs web saat ini assemble.io, adalah untuk grunt-assemble. Terima kasih atas kesabaran Anda sementara kami berupaya memperbarui situs dengan dokumentasi untuk perakitan terbaru) .
(Klik bagian berikut untuk memperluasnya)
(TOC dihasilkan oleh kata kerja menggunakan markdown-toc)
Assemble adalah alat baris perintah dan kerangka kerja pengembang untuk pembuatan prototipe cepat, pembuatan situs statis, dan banyak lagi.
Assemble digunakan oleh ribuan pengembang dan tim di lebih dari 170 negara! Berikut adalah beberapa contoh situs yang dibangun dengan assemble:
Apakah situs web, blog, atau proyek Anda dibuat dengan rakitan? Tolong beri tahu kami tentang hal itu!
Assemble dapat digunakan secara mandiri, namun akan lebih canggih lagi bila digunakan bersama pustaka berikut:
Berikut adalah beberapa fitur yang ditawarkan assemble:
Tambahkan rakitan devDependencies
proyek Anda menggunakan npm:
$ npm install -D assemble
Anda sekarang dapat menjalankan assemble secara langsung (menggunakan node assemblefile.js
dll) atau menggunakan skrip npm
. Misalnya, tambahkan yang berikut ke package.json:
{
"scripts" : {
"build" : " assemble "
}
}
Lalu lari
$ npm run build
Anda juga dapat merakit CLI secara global, yang menambahkan perintah assemble
ke jalur sistem Anda, sehingga memungkinkannya dijalankan dari direktori mana pun.
$ npm install --global assemble
Perhatikan bahwa meskipun assemble diinstal secara global, praktik yang baik adalah menginstalnya secara lokal di setiap proyek untuk memastikan bahwa proyek Anda terlindungi dari potensi perubahan yang dapat menyebabkan kerusakan yang mungkin terjadi pada assemble di antara siklus pengembangan.
Untuk menggunakan CLI assemble, Anda perlu menambahkan assemblefile.js
ke proyek Anda. Cara tercepat untuk melakukannya adalah dengan menjalankan perintah berikut:
$ assemble
Jika tidak ada assemblefile.js
di proyek saat ini, assemble akan menanyakan apakah Anda ingin menambahkannya. Jika Anda menjawab ya, assemble akan menghasilkan assembfile.js
dasar untuk Anda.
Jalankan assemble dari baris perintah.
$ assemble < tasks > [options]
Tentukan satu atau lebih tugas yang dipisahkan ruang untuk dijalankan.
Contoh
Jalankan tugas foo
$ assemble foo
Jalankan tugas foo
dan bar
$ assemble foo bar
Opsi non-tugas diawali dengan --
.
Contoh
Atur --cwd
untuk menjalankan assemblefile.js di direktori berbeda:
$ assemble --cwd=docs
Keluarkan tampilan saat dimuat dan catat ke stderr
:
$ assemble --emit=view
Lihat selengkapnya [opsi baris perintah](#opsi baris perintah)
Jalur objek dapat ditentukan menggunakan notasi titik untuk kunci atau nilai dalam argumen baris perintah.
Selain itu, assemble menggunakan objek perluasan (dan beberapa penguraian khusus) untuk mempermudah meneruskan opsi dan perintah non-sepele melalui baris perintah. Jadi semua format berikut ini dimungkinkan.
Contoh
Nilai Boolean:
$ assemble --foo
# { foo: true }
Pasangan nilai kunci:
$ assemble --foo=bar
# { foo: 'bar' }
Boolean bersarang:
$ assemble --option=foo
# {options: { foo: true }}
Pasangan nilai kunci bertumpuk:
$ assemble --option=foo:bar
# {options: { foo: 'bar' }}
Pasangan nilai kunci yang sangat bertingkat:
$ assemble --option=foo.bar.baz:qux
# {options: foo: { bar: { baz: 'qux' }}}}
Atau di sisi kiri =
:
$ assemble --option.foo.bar.baz=qux
# {options: foo: { bar: { baz: 'qux' }}}}
Ubah cwd
untuk menjalankan assemblefile.js
, secara opsional tentukan tugas apa pun yang akan dijalankan:
$ assemble < tasks > --cwd [directory]
Contoh
Untuk menjalankan contoh scaffolds
di direktori examples/
, Anda harus memasukkan:
$ assemble --cwd examples/scaffolds
Jika berhasil, pada baris perintah, Anda akan melihat sesuatu seperti ini:
Tentukan nama file konfigurasi untuk menjalankan CLI assemble, defaultnya adalah assemblefile.js
.
Contoh
$ assemble --file assemblefile.dev.js
Buat aplikasi assemble
. Ini adalah fungsi utama yang diekspor oleh modul assemble.
Param
options
{Object} : Secara opsional meneruskan opsi default untuk digunakan.Contoh
var assemble = require ( 'assemble' ) ;
var app = assemble ( ) ;
Assemble mengekspos seluruh API dari perpustakaan templat untuk bekerja dengan templat dan koleksi templat. API ini jauh lebih luas daripada yang didokumentasikan di sini, lihat templat untuk dokumentasi lebih lanjut.
Templat dan Tampilan
Dalam dokumentasi berikut, istilah "templat" dan "tampilan" merujuk pada aspek dari hal yang sama. Inilah maksudnya:
template
: string template yang sebenarnyaview
: objek dengan properti content
yang berisi string templat. Karena tampilan adalah contoh vinil, Anda dapat menganggap tampilan sebagai "file vinil untuk templat". Buat koleksi templat untuk tampilan cache:
app . create ( 'includes' , { viewType : 'partial' } ) ;
Pilihan
cwd
{String} : direktori dasar yang digunakan saat memuat templat ke koleksi dari glob
viewType
: {String|Array} : Satu atau lebih tipe tampilan untuk dikaitkan dengan koleksi
Tambahkan tampilan
Tambahkan tampilan ke koleksi:
app . include ( 'foo.md' , { contents : new Buffer ( 'this is contents' ) } ) ;
Tambahkan beberapa tampilan:
app . includes ( {
path : 'foo.md' , contents : new Buffer ( 'this is contents' ) ,
path : 'bar.md' , contents : new Buffer ( 'this is contents' ) ,
path : 'baz.md' , contents : new Buffer ( 'this is contents' )
} ) ;
// or pass a glob (optionally override `cwd` defined on `.create`)
app . includes ( '*.{md,hbs}' , { cwd : 'templates/includes' } ) ;
Tipe tampilan ditentukan pada koleksi untuk menentukan bagaimana templat dalam koleksi akan ditangani sepanjang [siklus render][].
Tipe yang tersedia
Assemble mendukung tiga tipe tampilan:
partial
: Tampilan dengan tipe ini dapat digunakan sebagai "parsial" (atau "tampilan sebagian"), yang dapat dimasukkan ke tampilan lain. Berguna untuk komponen, fragmen dokumen, atau cuplikan kode atau konten lain yang dapat digunakan kembali. Tampilan ini diteruskan ke mesin rendering untuk digunakan sebagai sebagian, atau variabel pada konteks jika sebagian tidak didukung secara langsung.layout
: memungkinkan tampilan untuk "membungkus" tampilan lain (jenis apa pun, termasuk tata letak atau sebagian lainnya) dengan kode atau konten umum.renderable
: Tampilan yang memiliki hubungan satu-ke-satu dengan file yang dirender yang pada akhirnya akan terlihat oleh pengguna atau pengunjung situs web. Misalnya: halaman atau postingan blog. Tipe tampilan renderable
secara otomatis disetel jika tidak ada tipe tampilan lain yang disetel.Mendefinisikan tipe tampilan
Anda dapat menentukan tipe tampilan saat koleksi dibuat:
app . create ( 'snippet' , { viewType : 'partial' } ) ;
Atau langsung pada pilihan koleksi:
app . create ( 'snippet' ) ;
app . snippets . option ( 'viewType' , [ 'partial' ] ) ; // string or array
Daftarkan mesin templat untuk merender tampilan dengan ext
yang diberikan:
app . engine ( ext , fn ) ;
Param
ext
{String} : Ekstensi file dari file yang akan dirender dengan mesinfn
{Function} : Fungsi asinkron yang mengikuti konvensi mesin konsolidasi, dan mengambil tiga argumen: str
, locals
dan callback
.Contoh
// this engine is already registered in assemble
app . engine ( 'hbs' , require ( 'engine-handlebars' ) ) ;
// create a custom engine
app . engine ( 'txt' , function ( str , locals , cb ) {
// render `str` with `locals`
cb ( null , str ) ;
} ) ;
Anda dapat meminta assemble untuk menggunakan mesin yang sama untuk semua ekstensi file dengan menetapkan nilai pada options.engine
.
Contoh
// use engine `hbs` for rendering all files
app . option ( 'engine' , 'hbs' ) ;
Atau, jika Anda menggunakan .renderFile, Anda dapat memaksa mesin tertentu untuk digunakan dengan meneruskan nama mesinnya.
Contoh
Gunakan mesin hbs
untuk merender semua templat:
app . src ( 'templates/*.*' )
. pipe ( app . renderFile ( 'hbs' ) )
Render tampilan dengan locals
dan callback
yang diberikan.
app . render ( view , { title : 'Foo' } , function ( err , view ) {
// `view` is an object with a rendered `content` property
} ) ;
Param
view
{Object|String} : Tampilan yang akan direnderlocals
{Object} : Penduduk lokal yang akan diteruskan ke mesin templat untuk merender templat dalam view
callback
{Fungsi}Assemble menawarkan metode tingkat rendah berikut untuk bekerja dengan sistem file:
Assemble memiliki dukungan kelas satu untuk vinyl-fs, sehingga plugin gulp apa pun dapat digunakan di pipeline assemble Anda.
Buat aliran vinil. Membawa pola glob atau jalur file ke file sumber untuk dibaca.
Param
glob
{String|Array} : Pola glob atau jalur file ke file sumber.options
{Object} : Opsi atau lokal untuk digabungkan ke dalam konteks dan/atau diteruskan ke plugin src
Contoh
app . src ( 'src/*.hbs' ) ;
// define `src` options
app . src ( 'src/*.hbs' , { layout : 'default' } ) ;
Tentukan tujuan untuk file yang diproses.
Param
dest
{String|Function} : Jalur file atau fungsi ganti nama.options
{Object} : Opsi dan lokal untuk diteruskan ke plugin dest
Contoh
app . dest ( 'dist/' ) ;
Salin file dengan patterns
glob yang diberikan ke dest
yang ditentukan.
Param
patterns
{String|Array} : Pola gumpalan file yang akan disalin.dest
{String|Function} : Direktori tujuan.returns
{Stream} : Aliran, untuk melanjutkan pemrosesan jika perlu.Contoh
app . task ( 'assets' , function ( ) {
// return, to let assemble know when the task has completed
return app . copy ( 'assets/**' , 'dist/' ) ;
} ) ;
Merender file saat didorong melalui aliran.
app . src ( '*.hbs' )
. pipe ( app . renderfile ( ) )
. pipe ( app . dest ( 'foo' ) ) ;
Paksa mesin tertentu untuk digunakan untuk merender file:
app . engine ( 'txt' , function ( str , locals , cb ) {
cb ( null , str ) ;
} ) ;
app . src ( '*.hbs' )
. pipe ( app . renderfile ( 'txt' ) ) //<= use engine `txt`
. pipe ( app . dest ( 'foo' ) ) ;
Assemble memiliki metode berikut untuk menjalankan tugas dan mengendalikan alur kerja:
Tentukan tugas yang akan dijalankan ketika tugas tersebut dipanggil.
Param
name
{String} : Nama tugasfn
{Function} : fungsi yang dipanggil saat tugas dijalankan.Contoh
app . task ( 'default' , function ( ) {
app . src ( 'templates/*.hbs' )
. pipe ( app . dest ( 'site/' ) ) ;
} ) ;
Jalankan satu atau beberapa tugas.
Param
tasks
{Array|String} : Nama tugas atau larik nama tugas.cb
{Function} : fungsi panggilan balik yang memperlihatkan err
Contoh
app . build ( [ 'foo' , 'bar' ] , function ( err ) {
if ( err ) throw err ;
console . log ( 'done!' ) ;
} ) ;
Tonton file, jalankan satu atau lebih tugas saat file yang ditonton berubah.
Param
glob
{String|Array} : Jalur file atau pola glob.tasks
{Array} : Tugas yang harus diperhatikan.Contoh
app . task ( 'watch' , function ( ) {
app . watch ( 'docs/*.md' , [ 'docs' ] ) ;
} ) ;
Plugin dari aplikasi apa pun yang dibangun berdasarkan basis harus berfungsi dengan Assemble dan dapat digunakan di assemblefile.js
Anda:
baseplugin
assembleplugin
generateplugin
templatesplugin
updateplugin
verbplugin
Kunjungi panduan dokumentasi plugin untuk mempelajari cara menggunakan, membuat, dan menerbitkan plugin.
Hubungi kami!
Punya pertanyaan, saran, atau ingin berdiskusi merakit? Bergabunglah dalam percakapan di gitter atau hubungi kami di twitter. Tim perakit dan komunitas selalu dengan senang hati membantu!
Situs web sudah usang dan sedang difaktorkan ulang!
Situs web Assemble, assemble.io, hanya memiliki informasi terkait gulp-assemble. Kami bekerja keras untuk memperbarui situs dengan informasi tentang rilis terbaru.
Sementara itu, dokumen WIP mungkin berguna bagi Anda. Tes unit juga merupakan contoh yang bagus!
Apakah situs web perakitan sudah yang terbaru?
Tidak, seperti disebutkan di atas, ini benar-benar ketinggalan jaman. Jika Anda menggunakan grunt-assemble, beberapa dokumentasi di assemble.io mungkin masih berguna. Jika Anda menggunakan assemble v0.6.0 dan lebih tinggi, dokumentasinya mungkin salah dalam hampir semua hal.
Kami secara aktif (setiap hari) mengerjakan refactor dan ini merupakan prioritas yang sangat tinggi.
Apa perbedaan antara assemble-core dan assemble?
Assemble menambahkan CLI, beberapa koleksi tampilan bawaan: pages
, layouts
, dan partials
, middleware untuk parsing front-matter, dan beberapa default dasar lainnya yang menurut kami diharapkan banyak pengguna. Jika Anda lebih memilih default yang berbeda, assemble-core adalah titik awal yang bagus.
Jika Anda menginginkan sesuatu yang menangani templat, rendering, mesin, pembantu, koleksi, dll. tetapi Anda tidak perlu menjalankan tugas atau bekerja dengan sistem file, maka pertimbangkan untuk menggunakan templat daripada merakit-inti.
Saya menggunakan gulp, mengapa lebih disarankan menggunakan assemble secara langsung, daripada menjalankan assemble dengan gulp?
Anda dapat menjalankan plugin gulp dengan assemble, tetapi tidak selalu sebaliknya. Hal ini karena, sebagai sistem build, assemble melakukan hal-hal yang tidak dilakukan gulp, seperti menangani middleware.
Misalnya, metode .src
dan .dest
assemble memiliki penangan middleware .onStream
, .preWrite
, dan .postWrite
bawaan. Jika Anda masih ingin menggunakan gulp dan siklus build Anda menyertakan middleware yang memerlukan penangan ini, Anda dapat menggunakan plugin assemble-handle dengan gulp untuk memastikan bahwa penangan masih dipanggil sesuai kebutuhan.
Ini adalah cara yang panjang untuk mengatakan, Anda dapat menemukan cara untuk membuat gulp berfungsi, tetapi Anda hanya akan menambahkan ketergantungan ekstra pada proyek Anda untuk melakukan hal-hal yang sudah dilakukan oleh assemble.
Apa hubungan antara gulp dan assemble?
Silakan baca FAQ gulp kami untuk informasi lebih lanjut.
Dapatkan pembaruan tentang perkembangan Assemble dan mengobrol dengan pengelola proyek dan anggota komunitas.
Ikuti @assemblejs di Twitter.
Jika Anda menyukai Assemble dan ingin men-tweet tentangnya, silakan sebutkan @assemblejs
atau gunakan hashtag #assemble
Baca dan berlangganan Blog Official Assemble.
Bergabunglah dengan ruang Slack resmi.
Bergabunglah dengan percakapan di Gitter
Beritahu kami tentang proyek perakitan Anda
Tunjukkan rasa cintamu dengan membintangi Assemble!
Dapatkan bantuan implementasi di StackOverflow (silakan gunakan tag assemble
assemble dalam pertanyaan)
Gitter Diskusikan Assemble bersama kami di Gitter
Agar dapat ditemukan secara maksimal, pengembang plugin harus menggunakan kata kunci assembleplugin
pada paket yang memodifikasi atau menambah fungsionalitas Assemble saat mendistribusikan melalui npm atau mekanisme pengiriman serupa.
Berkontribusi
Silakan baca panduan kontribusi kami jika Anda ingin mempelajari lebih lanjut tentang berkontribusi pada proyek ini.
Anda mungkin juga tertarik dengan proyek berikut dari @doowb dan @jonschlinkert:
Jika assemble tidak melakukan apa yang Anda perlukan, ada beberapa proyek open source hebat lainnya yang mungkin Anda minati, dibuat oleh teman-teman kami di GitHub (dalam urutan abjad):
Generator situs statis
Kerangka blog
Entri changelog diklasifikasikan menggunakan label berikut (dari keep-a-changelog ):
added
: untuk fitur baruchanged
: untuk perubahan fungsi yang adadeprecated
: untuk fitur yang dulunya stabil dan dihapus pada rilis mendatangremoved
: untuk fitur yang tidak digunakan lagi dan dihapus dalam rilis inifixed
: untuk perbaikan bug apa punLabel khusus yang digunakan dalam log perubahan ini:
dependencies
: menambah ketergantunganhousekeeping
: penataan ulang kode, pengeditan kecil, atau perubahan lain yang tidak sesuai dengan salah satu kategori lainnya. ditambahkan
tetap
isbinaryfile
mencoba membaca dari file yang tidak ada. ketergantungan
view
dihiasi dengan .toStream()
saat dibuat oleh app
(versus koleksi). ketergantungan
tetap
view.stat
menjadi null dalam beberapa kasus setelah view.path
diubahview.base
tidak selalu benar pada tampilan yang tidak dibuat dari sistem file ketergantungan
dest
ketergantungan
list
s Ketergantungan
Ketergantungan
.log()
, yang juga memaparkan metode tambahan, seperti .log.info()
, .log.success()
, dll.support/docs
, sehingga dokumen penurunan harga dapat dibuat ke direktori docs
renameKey
dari metode .data
. Gunakan opsi namespace
sebagai gantinya. Tingkatkan assemble-core ke v0.22.0 untuk memanfaatkan perbaikan dan peningkatan metode pencarian: .find
dan getView
. Tidak ada perubahan API yang dilakukan. Harap beri tahu kami jika terjadi regresi.
List
yang menyebabkan pembantu pengumpulan meledakapp.getView()
dan app.find()
queue
telah dihapus pada koleksi. Lihat assemble-core untuk detail tambahan.file.base
, menyebabkan direktori tujuan menjadi relatif terhadap cwd alih-alih induk glob dalam beberapa kasus.renameKey
tidak selalu digunakan saat ditentukan pada opsi pemuat koleksi.debug
dan kode terkait telah dihapusnode_modules
sepenuhnya dan menginstal ulang semua dependensi untuk menghindari kesalahan seperti isRegistered is not a function
.watch
dan mendukung penggunaan plugin base-watch.(Changelog dihasilkan oleh helper-changelog)
Permintaan tarik dan bintang selalu diterima. Untuk bug dan permintaan fitur, silakan buat masalah.
Silakan baca panduan berkontribusi untuk mendapatkan saran tentang masalah pembukaan, permintaan penarikan, dan standar pengkodean.
Jika Assemble tidak melakukan apa yang Anda butuhkan, beri tahu kami
Berkomitmen | Penyumbang |
---|---|
1497 | jonschlinkert |
842 | doowb |
11 | AndersDJohnson |
7 | Arkkimaagi |
7 | Stefanwalther |
4 | avr |
4 | tukang bengkok |
2 | matahari besar |
2 | rauberdaniel |
2 | onokumus |
2 | RobLoach |
2 | StevenHitam |
2 | xzyfer |
2 | ain |
1 | asan |
1 | bauerca |
1 | caseyg1204 |
1 | hyzhak |
1 | mootari |
1 | kritikalmash |
1 | joonasy.dll |
1 | jordanthomas |
1 | keributan |
1 | pembela |
1 | pburtchaell |
1 | kekacauan |
1 | oncletom |
1 | Tylerhowarth |
1 | klokie |
Jon Schlinkert
Brian Woodward
Hak Cipta © 2017, Jon Schlinkert. MIT
File ini dibuat oleh verb-generate-readme, v0.6.0, pada tanggal 27 Desember 2017.