正在尋找 grunt 插件?請造訪 grunt-assemble。
(請注意,目前網站 assemble.io 用於 grunt-assemble。感謝您在我們使用最新彙編文件更新網站時的耐心等待) 。
(按一下以下部分將其展開)
(由動詞使用 markdown-toc 產生的 TOC)
Assemble 是一個命令列工具和開發人員框架,用於快速原型設計、靜態網站產生等。
Assemble 被 170 多個國家的數千名開發人員和團隊使用!以下是使用 assemble 建立的網站的一些範例:
您的網站、部落格或專案是用 assemble 建立的嗎?請告知我們!
Assemble 可以獨立使用,但與以下庫一起使用時它會更強大:
以下是 assemble 提供的部分功能:
使用 npm 新增組裝項目的devDependencies :
$ npm install -D assemble現在您應該能夠直接執行 assemble(使用node assemblefile.js等)或使用npm腳本。例如,將以下內容新增至 package.json:
{
"scripts" : {
"build" : " assemble "
}
}然後運行
$ npm run build您也可以全域彙編 CLI,這會將assemble命令新增至您的系統路徑,從而允許它從任何目錄運行。
$ npm install --global assemble請注意,即使 assemble 是全域安裝的,最好的做法是在每個專案中本地安裝它,以確保您的專案免受開發週期之間 assemble 中可能發生的任何潛在破壞性變更的影響。
要使用 assemble 的 CLI,您需要將assemblefile.js加入您的專案中。最快的方法是執行以下命令:
$ assemble如果目前專案中不存在assemblefile.js ,assemble 會詢問您是否要新增一個。如果您回答“是”,assemble 將為您產生一個基本的assembfile.js 。
從命令列運行彙編。
$ assemble < tasks > [options]指定要執行的一項或多項以空格分隔的任務。
範例
運行任務foo
$ assemble foo運行任務foo和bar
$ assemble foo bar非任務選項以--為前綴。
範例
設定--cwd以在不同的目錄中執行 assemblefile.js:
$ assemble --cwd=docs在載入視圖時發出視圖並將其記錄到stderr :
$ assemble --emit=view看更多[命令列選項](#命令列選項)
可以使用命令列參數中的鍵或值的點表示法來指定物件路徑。
此外,彙編使用擴充物件(和一些自訂解析)來更輕鬆地透過命令列傳遞重要的選項和命令。所以以下所有格式都是可能的。
範例
布林值:
$ 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如果成功,您應該在命令列中看到如下內容:
指定 assemble 的 CLI 運行的設定檔的名稱,預設為assemblefile.js 。
例子
$ assemble --file assemblefile.dev.js建立一個assemble應用程式。這是 assemble 模組導出的主要函數。
參數
options {Object} :可以選擇傳遞要使用的預設選項。例子
var assemble = require ( 'assemble' ) ;
var app = assemble ( ) ;Assemble 公開了範本庫中的整個 API,用於處理範本和範本集合。該 API 比此處記錄的內容要廣泛得多,請參閱範本以取得更多文件。
模板和視圖
在以下文件中,術語「範本」和「視圖」均指同一事物的各個方面。他們的意思是這樣的:
template :實際的模板字串view :具有包含模板字串的content屬性的物件。由於視圖是乙烯基的實例,因此您可以將視圖視為“模板的乙烯基文件”。 建立用於快取視圖的範本集合:
app . create ( 'includes' , { viewType : 'partial' } ) ;選項
cwd {String} :從 glob 將模板載入到集合時使用的基底目錄
viewType : {String|Array} :與集合關聯的一種或多種視圖類型
新增視圖
將視圖新增至集合:
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 支援三種視圖類型:
partial :這種類型的視圖可以用作「部分」(或「部分視圖」),可以注入到其他視圖中。對於元件、文件片段或可重複使用程式碼或內容的其他片段很有用。這些視圖被傳遞到渲染引擎以用作局部視圖,或者如果不直接支援局部視圖,則用作上下文中的變數。layout :允許視圖使用通用程式碼或內容「包裝」其他視圖(任何類型,包括其他佈局或部分視圖)。renderable :與渲染檔案有一對一關係的視圖,最終對網站的使用者或訪客可見。例如:頁面或部落格文章。如果未設定其他視圖類型,則會自動設定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 。例子
// 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上設定值來告訴 assemble 對所有檔案副檔名使用相同的引擎。
例子
// 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 插件都可以在您的 assemble 管道中使用。
創建黑膠唱片串流。採用全域模式或檔案路徑來讀取來源檔案。
參數
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/' ) ) ;
} ) ; 運行一項或多項任務。
參數
tasks {Array|String} :任務名稱或任務名稱陣列。cb {Function} :暴露err的回呼函數例子
app . build ( [ 'foo' , 'bar' ] , function ( err ) {
if ( err ) throw err ;
console . log ( 'done!' ) ;
} ) ; 監視文件,當監視的文件發生變更時運行一項或多項任務。
參數
glob {String|Array} :檔案路徑或 glob 模式。tasks {Array} :要觀看的任務。例子
app . task ( 'watch' , function ( ) {
app . watch ( 'docs/*.md' , [ 'docs' ] ) ;
} ) ; 任何基於基礎構建的應用程式的插件都應該與 Assemble 一起使用,並且可以在您的assemblefile.js中使用:
baseplugin關鍵字在 npm 上尋找基本插件assembleplugin關鍵字在 npm 上尋找 assemble 插件generateplugin關鍵字在npm上尋找生成插件templatesplugin關鍵字在 npm 上尋找模板插件updateplugin關鍵字在 npm 上尋找更新插件verbplugin關鍵字在 npm 上尋找 verb 插件請造訪外掛程式文件指南,以了解如何使用、創作和發布外掛程式。
聯絡我們!
有疑問、建議或想討論組裝嗎?加入 gitter 上的對話或在 Twitter 上留言給我們。組裝團隊和社群總是樂意提供協助!
網站已過時,正在重構!
Assemble 的網站 assemble.io 只有與 gulp-assemble 相關的資訊。我們正在努力用有關最新版本的資訊更新網站。
同時,您可能會發現 WIP 文件很有用。單元測試也是很好的例子!
組裝網站是最新的嗎?
不,正如上面提到的,它已經完全過時了。如果您使用 grunt-assemble,assemble.io 上的一些文件可能仍然有用。如果您使用的是 assemble v0.6.0 及更高版本,則該文件幾乎在所有方面都可能是錯誤的。
我們正在積極(每天)進行重構,這是一個非常高的優先事項。
彙編核心和彙編有什麼區別?
Assemble 新增了一個 CLI、一些內建視圖集合: pages 、 layouts和partials 、用於解析前面內容的中間件,以及我們發現許多使用者期望的其他一些基本預設值。如果您喜歡不同的預設值,assemble-core 是一個很好的起點。
如果您想要處理範本、渲染、引擎、助理、集合等的東西,但不需要執行任務或使用檔案系統,那麼請考慮使用範本而不是 assemble-core。
我使用gulp,為什麼建議直接使用assemble,而不是用gulp運行assemble?
您可以使用 assemble 運行 gulp 插件,但反之則不然。這是因為,作為一個建置系統,assemble 可以做 gulp 不做的事情,例如處理中間件。
例如,assemble 的.src和.dest方法具有內建的.onStream 、 .preWrite和.postWrite中間件處理程序。如果您仍然希望使用 gulp 並且您的建置週期包含需要這些處理程序的中間件,則可以將 assemble-handle 外掛程式與 gulp 一起使用,以確保仍根據需要呼叫處理程序。
這是一個很長的說法,你可以找到讓 gulp 工作的方法,但你只需向你的專案添加一個額外的依賴項來完成 assemble 已經完成的事情。
gulp 和 assemble 有什麼關係?
請閱讀我們的 gulp 常見問題以獲取更多資訊。
取得 Assemble 開發的最新資訊並與專案維護者和社群成員聊天。
在 Twitter 上關注@assemblejs。
如果您喜歡 Assemble 並想發布有關它的推文,請隨時提及@assemblejs或使用#assemble主題標籤
閱讀並訂閱官方 Assemble 部落格。
加入官方 Slack 房間。
加入 Gitter 上的對話
告訴我們您的組裝項目
透過主演《集合》來表達你的愛吧!
在 StackOverflow 上取得實作幫助(請在問題中使用 assemble assemble標籤)
Gitter在 Gitter 上與我們討論集合
為了最大程度地提高可發現性,插件開發人員應在透過 npm 或類似交付機制分發時修改或添加 Assemble 功能的套件上使用關鍵字assembleplugin 。
貢獻
如果您想了解有關為該專案做出貢獻的更多信息,請閱讀我們的貢獻指南。
您可能也對 @doowb 和 @jonschlinkert 的這些項目感興趣:
如果 assemble 不能滿足您的需要,您可能會對我們的朋友在 GitHub 上創建的其他一些很棒的開源專案感興趣(按字母順序排列):
靜態站點產生器
部落格框架
變更日誌條目使用以下標籤進行分類(來自 keep-a-changelog ):
added :用於新功能changed :用於現有功能的更改deprecated :在即將發布的版本中刪除了曾經穩定的功能removed :針對此版本中已刪除的已棄用功能fixed :修復任何錯誤此變更日誌中使用的自訂標籤:
dependencies :碰撞依賴性housekeeping :程式碼重新組織、較小的編輯或不屬於其他類別之一的其他變更。 額外
固定的
isbinaryfile嘗試從不存在的檔案中讀取的錯誤。 依賴關係
view在由app建立時以.toStream()裝飾(相對於集合)。 依賴關係
固定的
view.stat更改後在某些情況下view.path為 nullview.base對於不是從檔案系統建立的視圖並不總是正確的依賴關係
dest處理的改進依賴關係
list上提供的新方法依賴關係
依賴關係
.log()方法,它也公開其他方法,例如.log.info() 、 .log.success()等。support/docs ,以便可以將 markdown 文件建置到docs目錄.data方法中刪除renameKey選項。請改用namespace選項。 將 assemble-core 升級到 v0.22.0,以利用查找方法的修復和改進: .find和getView 。未進行任何 API 變更。如果出現回歸,請告知我們。
List錯誤app.getView()和app.find()queue屬性的支援。有關更多詳細信息,請參閱 assemble-core。file.base錯誤,導致在某些情況下 dest 目錄相對於 cwd 而不是 glob 父級。renameKey在集合載入器選項上定義時並不總是使用。debug方法和相關程式碼已被刪除node_modules並重新安裝所有依賴項,以避免出現isRegistered is not a function等錯誤.watch方法,改用base-watch插件。(由 helper-changelog 產生的變更日誌)
拉取請求和星星總是受歡迎的。對於錯誤和功能請求,請建立問題。
請閱讀貢獻指南,以取得開放問題、拉取請求和編碼標準的建議。
如果 Assemble 無法滿足您的需要,請告訴我們
| 提交 | 貢獻者 |
|---|---|
| 第1497章 | 永施林克特 |
| 第842章 | 杜布 |
| 11 | 安德斯·約翰遜 |
| 7 | 阿基馬阿吉 |
| 7 | 史蒂芬瓦爾特 |
| 4 | 平均電壓 |
| 4 | 彎曲者 |
| 2 | 偉大聖羅 |
| 2 | 勞貝爾丹尼爾 |
| 2 | 奧諾庫穆斯 |
| 2 | 羅布洛奇 |
| 2 | 史蒂文·布萊克 |
| 2 | 西西弗 |
| 2 | 艾因 |
| 1 | 阿桑斯 |
| 1 | 鮑爾卡 |
| 1 | 凱西G1204 |
| 1 | 海札克 |
| 1 | 莫塔里 |
| 1 | 批判性混搭 |
| 1 | 喬納西 |
| 1 | 約旦托馬斯 |
| 1 | 弗雷耶爾 |
| 1 | 犯人 |
| 1 | 普伯特查爾 |
| 1 | 斯克莫里森 |
| 1 | 腫瘤 |
| 1 | 泰勒霍沃斯 |
| 1 | 克洛基 |
喬恩‧施林克特
布萊恩·伍德沃德
版權所有 © 2017,喬恩‧施林克特。麻省理工學院
該檔案由 verb-generate-readme v0.6.0 於 2017 年 12 月 27 日產生。