grunt プラグインをお探しですか? grunt-assembly にアクセスしてください。
(現在の Web サイト Assembly.io は grunt-assemble 用であることに注意してください。最新のアセンブルのドキュメントを使用してサイトを更新する作業を行っている間、しばらくお待ちいただきますようお願いいたします) 。
(次のセクションをクリックして展開します)
(Markdown-toc を使用して動詞によって目次が生成される)
Assemble は、ラピッド プロトタイピング、静的サイト生成などを行うためのコマンド ライン ツールおよび開発者フレームワークです。
Assemble は、170 か国以上の何千もの開発者やチームによって使用されています。アセンブルで構築されたサイトの例をいくつか示します。
あなたの Web サイト、ブログ、プロジェクトは Assembly で構築されていますか?ぜひお知らせください。
Assemble はスタンドアロンで使用できますが、次のライブラリと併用するとさらに強力になります。
アセンブルが提供する機能のほんの一部を次に示します。
npm を使用してプロジェクトのdevDependencies
を追加してアセンブルします。
$ npm install -D assemble
これで、( node assemblefile.js
などを使用して) アセンブルを直接実行するか、 npm
スクリプトを使用してアセンブルを実行できるようになります。たとえば、package.json に次のコードを追加します。
{
"scripts" : {
"build" : " assemble "
}
}
それから実行します
$ npm run build
また、アセンブルの CLI をグローバルに実行することもできます。これにより、 assemble
コマンドがシステム パスに追加され、任意のディレクトリから実行できるようになります。
$ npm install --global assemble
アセンブルがグローバルにインストールされている場合でも、開発サイクルの間にアセンブルで発生する可能性のある重大な変更からプロジェクトを確実に保護するために、すべてのプロジェクトでアセンブルをローカルにインストールすることをお勧めします。
Assembly の CLI を使用するには、 assemblefile.js
プロジェクトに追加する必要があります。これを最も速く行う方法は、次のコマンドを実行することです。
$ assemble
現在のプロジェクトにassemblefile.js
存在しない場合、Assembly は追加するかどうかを尋ねます。 「はい」と答えると、Assembly は基本的なassembfile.js
生成します。
コマンドラインからアセンブルを実行します。
$ assemble < tasks > [options]
実行する 1 つ以上のタスクをスペースで区切って指定します。
例
タスクfoo
を実行する
$ assemble foo
タスクfoo
およびbar
実行する
$ assemble foo bar
タスク以外のオプションには接頭辞--
が付きます。
例
--cwd
設定して、別のディレクトリで Assemblyfile.js を実行します。
$ assemble --cwd=docs
ロード時にビューを発行し、 stderr
に記録します。
$ assemble --emit=view
詳細 [コマンド ライン オプション](#コマンド ライン オプション)を参照
オブジェクト パスは、コマンド ライン引数のキーまたは値のドット表記を使用して指定できます。
さらに、アセンブルは、expand-object (および一部のカスタム解析) を使用して、コマンド ライン経由で重要なオプションやコマンドを簡単に渡すことができます。したがって、次のすべての形式が可能です。
例
ブール値:
$ assemble --foo
# { foo: true }
キーと値のペア:
$ assemble --foo=bar
# { foo: 'bar' }
ネストされたブール値:
$ assemble --option=foo
# {options: { foo: true }}
ネストされたキーと値のペア:
$ assemble --option=foo:bar
# {options: { foo: 'bar' }}
深くネストされたキーと値のペア:
$ assemble --option=foo.bar.baz:qux
# {options: foo: { bar: { baz: 'qux' }}}}
または=
の左側:
$ assemble --option.foo.bar.baz=qux
# {options: foo: { bar: { baz: 'qux' }}}}
必要に応じて、実行するタスクを指定して、 assemblefile.js
実行するようにcwd
変更します。
$ assemble < tasks > --cwd [directory]
例
examples/
ディレクトリ内のscaffolds
サンプルを実行するには、次のように入力します。
$ assemble --cwd examples/scaffolds
成功すると、コマンド ラインに次のような内容が表示されるはずです。
実行する Assembly の CLI の構成ファイルの名前を指定します。デフォルトは、 assemblefile.js
です。
例
$ assemble --file assemblefile.dev.js
assemble
アプリを作成します。これは、アセンブル モジュールによってエクスポートされるメイン関数です。
パラメータ
options
{Object} : 必要に応じて、使用するデフォルトのオプションを渡します。例
var assemble = require ( 'assemble' ) ;
var app = assemble ( ) ;
Assemble は、テンプレートおよびテンプレート コレクションを操作するためのテンプレート ライブラリから API 全体を公開します。 API はここで説明されているものよりもはるかに広範です。詳細なドキュメントについては、テンプレートを参照してください。
テンプレートとビュー
次のドキュメントでは、「テンプレート」と「ビュー」という用語は両方とも同じものの側面を指します。それらの意味は次のとおりです。
template
: 実際のテンプレート文字列view
: テンプレート文字列を含むcontent
プロパティを持つオブジェクト。ビューはビニールのインスタンスであるため、ビューを「テンプレート用のビニール ファイル」と考えることができます。 ビューをキャッシュするためのテンプレート コレクションを作成します。
app . create ( 'includes' , { viewType : 'partial' } ) ;
オプション
cwd
{String} : テンプレートをグロブからコレクションにロードするときに使用するベース ディレクトリ
viewType
: {String|Array} : コレクションに関連付ける 1 つ以上のビュー タイプ
ビューの追加
ビューをコレクションに追加します。
app . include ( 'foo.md' , { contents : new Buffer ( 'this is contents' ) } ) ;
複数のビューを追加します。
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' } ) ;
ビュー タイプはコレクション上で定義され、コレクション内のテンプレートが [レンダリング サイクル][] 全体でどのように処理されるかを決定します。
利用可能なタイプ
Assemble は 3 つのビュー タイプをサポートしています。
partial
: このタイプのビューは「部分」(または「部分ビュー」) として使用でき、他のビューに挿入できます。コンポーネント、ドキュメントの断片、または再利用可能なコードやコンテンツのその他のスニペットに役立ちます。これらのビューはレンダリング エンジンに渡され、パーシャルとして使用されるか、パーシャルが直接サポートされていない場合はコンテキストの変数として使用されます。layout
: ビューが他のビュー (他のレイアウトや部分ビューを含む任意のタイプ) を共通のコードまたはコンテンツで「ラップ」できるようにします。renderable
: レンダリングされたファイルと 1 対 1 の関係を持つビュー。最終的にユーザーまたは Web サイトの訪問者に表示されます。例: ページやブログ投稿。他のビュー タイプが設定されていない場合、 renderable
ビュー タイプは自動的に設定されます。ビュータイプの定義
コレクションの作成時にビュー タイプを定義できます。
app . create ( 'snippet' , { viewType : 'partial' } ) ;
または、コレクション オプションで直接次のように指定します。
app . create ( 'snippet' ) ;
app . snippets . option ( 'viewType' , [ 'partial' ] ) ; // string or array
指定されたext
でビューをレンダリングするためのテンプレート エンジンを登録します。
app . engine ( ext , fn ) ;
パラメータ
ext
{String} : エンジンでレンダリングするファイルのファイル拡張子fn
{Function} : 統合エンジンの規則に従い、 str
、 locals
、およびcallback
3 つの引数を受け取る非同期関数。例
// 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 ) ;
} ) ;
options.engine
に値を設定することで、すべてのファイル拡張子に同じエンジンを使用するようにアセンブルに指示できます。
例
// use engine `hbs` for rendering all files
app . option ( 'engine' , 'hbs' ) ;
または、.renderFile を使用している場合は、エンジン名を渡すことで特定のエンジンを強制的に使用することができます。
例
hbs
エンジンを使用してすべてのテンプレートをレンダリングします。
app . src ( 'templates/*.*' )
. pipe ( app . renderFile ( 'hbs' ) )
指定されたlocals
とcallback
を使用してビューをレンダリングします。
app . render ( view , { title : 'Foo' } , function ( err , view ) {
// `view` is an object with a rendered `content` property
} ) ;
パラメータ
view
{Object|String} : レンダリングするビューlocals
{Object} : view
でテンプレートをレンダリングするためにテンプレート エンジンに渡すローカルcallback
{関数}Assemble は、ファイル システムを操作するための次の低レベル メソッドを提供します。
Assemble は、vinyl-fs のファーストクラスのサポートを備えているため、どの gulp プラグインもアセンブル パイプラインで使用できます。
ビニールストリームを作成します。グロブ パターンまたはソース ファイルへのファイルパスを取得して読み取ります。
パラメータ
glob
{String|Array} : Glob パターンまたはソース ファイルへのファイル パス。options
{Object} : コンテキストにマージしたり、 src
プラグインに渡したりするためのオプションまたはローカル例
app . src ( 'src/*.hbs' ) ;
// define `src` options
app . src ( 'src/*.hbs' , { layout : 'default' } ) ;
処理されたファイルの宛先を指定します。
パラメータ
dest
{String|Function} : ファイル パスまたは関数の名前を変更します。options
{Object} : dest
プラグインに渡すオプションとローカル例
app . dest ( 'dist/' ) ;
指定された glob patterns
を持つファイルを指定されたdest
にコピーします。
パラメータ
patterns
{String|Array} : コピーするファイルのグロブ パターン。dest
{String|Function} : 宛先ディレクトリ。returns
{Stream} : 必要に応じて処理を続行するストリーム。例
app . task ( 'assets' , function ( ) {
// return, to let assemble know when the task has completed
return app . copy ( 'assets/**' , 'dist/' ) ;
} ) ;
ファイルがストリームにプッシュされるときにファイルをレンダリングします。
app . src ( '*.hbs' )
. pipe ( app . renderfile ( ) )
. pipe ( app . dest ( 'foo' ) ) ;
ファイルのレンダリングに特定のエンジンを強制的に使用します。
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 には、タスクを実行し、ワークフローを制御するための次のメソッドがあります。
タスクが呼び出されたときに実行されるタスクを定義します。
パラメータ
name
{String} : タスク名fn
{Function} : タスクの実行時に呼び出される関数。例
app . task ( 'default' , function ( ) {
app . src ( 'templates/*.hbs' )
. pipe ( app . dest ( 'site/' ) ) ;
} ) ;
1 つ以上のタスクを実行します。
パラメータ
tasks
{Array|String} : タスク名またはタスク名の配列。cb
{Function} : err
を公開するコールバック関数例
app . build ( [ 'foo' , 'bar' ] , function ( err ) {
if ( err ) throw err ;
console . log ( 'done!' ) ;
} ) ;
ファイルを監視し、監視されているファイルが変更されたときに 1 つ以上のタスクを実行します。
パラメータ
glob
{String|Array} : ファイルパスまたは glob パターン。tasks
{Array} : 監視するタスク。例
app . task ( 'watch' , function ( ) {
app . watch ( 'docs/*.md' , [ 'docs' ] ) ;
} ) ;
Base 上に構築されたアプリケーションのプラグインは Assemble で動作する必要があり、 assemblefile.js
で使用できます。
baseplugin
キーワードを使用して npm でベース プラグインを検索します。assembleplugin
キーワードを使用して npm でアセンブル プラグインを検索しますgenerateplugin
キーワードを使用して npm で生成プラグインを検索しますtemplatesplugin
キーワードを使用して npm でテンプレート プラグインを検索しますupdateplugin
キーワードを使用して npm で更新プラグインを検索しますverbplugin
キーワードを使用して npm で動詞プラグインを検索しますプラグインの使用方法、作成方法、公開方法については、プラグインのドキュメント ガイドを参照してください。
連絡してください!
質問や提案がありますか、または組み立てについて話し合ってみたいですか? gitter で会話に参加するか、twitter で声をかけてください。 Assembly チームとコミュニティはいつでも喜んでお手伝いいたします。
ウェブサイトは古くなり、リファクタリング中です。
Assemble の Web サイト、assemble.io には、gulp-assemble に関連する情報のみが掲載されています。最新リリースに関する情報を掲載するためにサイトを更新するよう努めています。
それまでの間、WIP ドキュメントが役に立つかもしれません。単体テストも素晴らしい例です。
Assembly Web サイトは最新ですか?
いいえ、上で述べたように、それは完全に時代遅れです。 grunt-assemble を使用している場合は、assemble.io にあるドキュメントの一部が役立つ可能性があります。アセンブル v0.6.0 以降を使用している場合、ドキュメントはおそらくほぼすべての点で間違っています。
私たちはリファクタリングに積極的に (毎日) 取り組んでおり、これは非常に高い優先度です。
アセンブルコアとアセンブルの違いは何ですか?
Assemble には、CLI、いくつかの組み込みビュー コレクション ( pages
、 layouts
、およびpartials
、前付事項を解析するためのミドルウェア、および多くのユーザーが期待している他のいくつかの基本的なデフォルトが追加されています。別のデフォルトを使用したい場合は、assemble-core が優れた出発点となります。
テンプレート、レンダリング、エンジン、ヘルパー、コレクションなどを処理するものが必要だが、タスクを実行したりファイル システムを操作したりする必要がない場合は、アセンブル コアの代わりにテンプレートを使用することを検討してください。
gulp を使用していますが、gulp でアセンブルを実行する代わりに、直接アセンブルを使用することが推奨されるのはなぜですか?
gulp プラグインをアセンブルで実行できますが、常にその逆が機能するとは限りません。これは、ビルド システムとして、ミドルウェアのハンドルなど、gulp が実行しない処理を Assembly が実行するためです。
たとえば、assemble の.src
と.dest
メソッドには、組み込みの.onStream
、 .preWrite
、および.postWrite
ミドルウェア ハンドラーがあります。それでも gulp を使用したい場合で、ビルド サイクルにこれらのハンドラーを必要とするミドルウェアが含まれている場合は、gulp でアセンブル ハンドル プラグインを使用して、ハンドラーが必要に応じて呼び出されるようにすることができます。
これは長い言い方ですが、gulp を機能させる方法を見つけることはできますが、アセンブリがすでに実行していることを実行するためにプロジェクトに追加の依存関係を追加するだけです。
ガルプとアセンブルの関係は何ですか?
詳細については、gulp FAQ をご覧ください。
Assemble の開発に関する最新情報を入手し、プロジェクトのメンテナーやコミュニティ メンバーとチャットしましょう。
Twitter で @assemblejs をフォローしてください。
Assemble が好きで、それについてツイートしたい場合は、お気軽に@assemblejs
に言及するか、 #assemble
ハッシュタグを使用してください。
Assemble 公式ブログを読んで購読してください。
公式 Slack ルームに参加してください。
Gitter での会話に参加しましょう
組み立てプロジェクトについて教えてください
「アッセンブル」を主演して愛を示しましょう!
StackOverflow で実装に関するヘルプを入手します (質問では Assembly assemble
タグを使用してください)
Gitterについて話し合う Gitter に集まってください
発見しやすさを最大限に高めるために、プラグイン開発者は、npm または同様の配信メカニズムを通じて配布するときに、Assemble の機能を変更または追加するパッケージでキーワードassembleplugin
使用する必要があります。
貢献する
このプロジェクトへの貢献について詳しく知りたい場合は、貢献ガイドをお読みください。
@doowb と @jonschlinkert による次のプロジェクトにも興味があるかもしれません。
Assembly が必要な機能を実行しない場合は、GitHub 上の友人によって作成された、他にも興味深いオープン ソース プロジェクトがいくつかあります (アルファベット順)。
静的サイトジェネレーター
ブログフレームワーク
変更ログ エントリは、次のラベルを使用して分類されます( keep-a-changelog から)。
added
: 新機能用changed
: 既存の機能の変更用deprecated
: 今後のリリースで削除される、以前は安定していた機能用removed
: このリリースで削除された非推奨の機能用fixed
: バグ修正用この変更ログで使用されているカスタム ラベル:
dependencies
: 依存関係をバンプしますhousekeeping
: コードの再編成、軽微な編集、または他のカテゴリに当てはまらないその他の変更。 追加した
修理済み
isbinaryfile
存在しないファイルから読み取ろうとしたバグが修正されました。 依存関係
app
(コレクションではなく) によって作成されたときに、 view
が.toStream()
で装飾されることを保証するための、assemble-streams への更新を取得するために、assemble-core をバンプします。 依存関係
修理済み
view.path
が変更された後、場合によってはview.stat
null になる原因となっていた 0.20.0 の回帰view.base
が常に正しいとは限りませんでした依存関係
dest
処理の改善を利用します。 依存関係
list
で利用可能な新しいメソッドを利用するために、アセンブルコアを v0.28.0 にアップグレードします。 依存関係
依存関係
.log()
メソッド。これは、 .log.info()
、 .log.success()
などの追加メソッドも公開します。support/docs
に移動され、マークダウン ドキュメントをdocs
ディレクトリにビルドできるようになりました。.data
メソッドからrenameKey
オプションを削除するテンプレートとベースデータの最新バージョンを取得します。代わりにnamespace
オプションを使用してください。 アセンブルコアを v0.22.0 にアップグレードし、検索メソッド.find
およびgetView
の修正と改善を活用します。 API の変更は行われませんでした。リグレッションが発生した場合はお知らせください。
List
バグを修正app.getView()
およびapp.find()
queue
プロパティのサポートはコレクションから削除されました。詳細については、「アセンブルコア」を参照してください。file.base
に使用されておらず、場合によっては dest ディレクトリが glob 親ではなく cwd を基準にするバグを修正しました。renameKey
が常に使用されないことがありました。debug
メソッドと関連コードは削除されましたisRegistered is not a function
などのエラーを避けるために、 node_modules
完全に削除し、すべての依存関係を再インストールしてください。 .watch
メソッドが削除され、base-watch プラグインの使用が優先されます。(helper-changelog によって生成された変更ログ)
プルリクエストやスターはいつでも大歓迎です。バグや機能リクエストについては、問題を作成してください。
問題のオープン、プル リクエスト、コーディング標準に関するアドバイスについては、コントリビュート ガイドをお読みください。
Assemble が必要な動作をしない場合は、お知らせください。
コミット | 投稿者 |
---|---|
1497年 | ヨンシュリンケルト |
842 | ふーん |
11 | アンダース・ジョンソン |
7 | アルキマーギ |
7 | ステファンワルサー |
4 | AVR |
4 | ベンドラッカー |
2 | ザグレートサンラ |
2 | ラウバーダニエル |
2 | オノクムス |
2 | ロブロチ |
2 | スティーブンブラック |
2 | クザイファー |
2 | ああん |
1 | アサン |
1 | バウエルカ |
1 | ケーシーグ1204 |
1 | ハイザク |
1 | ムータリ |
1 | クリティカルマッシュ |
1 | ジョナシー |
1 | ジョーダントーマス |
1 | フレイヤー |
1 | フェンダー |
1 | プブルチャエル |
1 | 非難 |
1 | オンクレトム |
1 | タイラーハワース |
1 | クローキー |
ジョン・シュリンカート
ブライアン・ウッドワード
著作権 © 2017、ジョン シュリンカート。マサチューセッツ工科大学
このファイルは、verb-generate-readme v0.6.0 によって 2017 年 12 月 27 日に生成されました。