Cucumber 文件是開放原始碼的,歡迎任何人貢獻。事實上,我們非常感謝您的幫助!
每個頁面都提供一個連結來編輯該頁面的內容。您也可以在 Github 上的 docs.cucumber.io 專案中進行變更。
流程
首次貢獻者必須發送 Pull Request。
一旦您的第一個 Pull Request 被接受,您將被提升為提交者,並獲得對 GitHub 儲存庫的寫入權限。身為提交者,您仍然應該使用 Pull Request。
每個 Pull Request 應該只修改/新增一個主題。請勿將許多不相關的文件變更合併到同一個 Pull Request 中。如果您想要修改或新增多個主題,請為每個主題開啟一個 Pull Request。
標題應說明您正在修改/建立哪些文件以及原因。例如 [docs] 新增 tags.md
或 [docs] 修改 tags.md 以說明布林運算式
。
更一般的貢獻流程在Cucumber 社群貢獻指南中說明。
討論文件
獲得您寫作的回饋意見是很好的。先從小變更開始,然後等待其他貢獻者在 Pull Request 上提供回饋意見。
您可以加入 Cucumber Discord 來討論或提出問題。
貢獻內容
開始貢獻的一個好方法是回答 Cucumber Discord 或 GitHub 討論區上的問題。如果文件中目前缺少答案,您可以將問題的答案新增至文件中。
您也可以將問題新增至常見問題頁面,並連結到文件中相關的部分。
另一個選項是尋找在 GitHub 上的 docs.cucumber.io 專案中標記為 Good first issue
和/或 Help wanted
的問題。如果您對這些問題有任何疑問,您可以在問題本身新增評論,或在 Discord 上聯絡我們。
一般寫作風格
一般而言,文件應該簡潔扼要。
當沒有什麼可以再刪除時,而不是當沒有什麼可以再新增時,才達到完美 - Antoine de Saint Exupéry
一些指南
- 每個頁面都應該以資訊/動機段落開始
- 段落應該簡短到足以閱讀,但長到足以發展一個想法
- 每個頁面都應該以
h1
標題開始。章節使用h2
;子章節使用h3
- 斷開長行。在大約第 80 列插入新行。這很重要,因為只能將評論新增到一行。
- 以現在時態寫作
- 使用中性語言,但盡量使其有點有趣(這很難!)
- 盡可能以平台中立的方式寫作。Cucumber 是以多種語言實作的,文件不應假設特定的平台
- 對所有程式碼範例(Gherkin 除外)以及與一種或多種特定語言相關的段落使用程式碼區塊
- 對僅與一種或多種特定語言相關的文字使用語言區塊
- 根據需要標記多語頁面
- 所有文件都應使用英國英語。以美式英語的貢獻是可以的 - 編輯者會進行翻譯。
- 謹慎使用外部網站的連結
- 請勿使用受著作權保護的材料(圖像、文字或其他)
- 插圖很棒,但請使用低保真繪圖;Cucumber 的設計團隊會根據 Cucumber 的品牌指南重新建立插圖
- 盡量讓您的貢獻與目前的文件保持一致。例如
- 使用一致的措辭和格式
- 在關鍵字周圍使用反引號;在這種情況下,關鍵字可以使用大寫字母書寫,例如
Step Definition
- 在句子中引用概念時使用小寫字母:例如,「step definition」而不是「Step Definition」
教學寫作風格
- 假設讀者對該主題知之甚少或一無所知
- 使用對話式的風格
- 確保教學中的每個步驟都清楚地說明
- 如果需要,請描述每個步驟的結果應該是什麼
工具鏈
文件以 Markdown 撰寫。
文件儲存在 Github 上的 docs.cucumber.io 專案中。
選單結構
頁面會顯示在自己的區段中;這是檔案所在的目錄。預設情況下,區段中的頁面會依字母順序排列,但可以透過指定 weight
來覆寫。
頁面結構
- YAML 前言(帶有標題和摘要)
- 包含程式碼或特定語言文字的頁面應標記為多語頁面
- 指定
weight
以給予它們在選單中的(相對)順序(請參閱 #menu-structure)
- 簡介段落
- 段落
YAML 前言中頁面的標題會以 <h1>
標題在頁面頂部呈現。以段落開始內文,而不是標題。如果您以標題開始,頁面頂部將會緊接著另一個標題的 h1
,這樣看起來不太好。
多語頁面
頁面可以包含相同內容的變體,這些變體會根據特定的程式設計語言有條件地顯示文字或原始碼。
如果頁面在 front-matter 中指定以下內容,則會顯示語言選擇
polyglot:
- java
- javascript
- ruby
- kotlin
- scala
- dotnet
目前支援以下語言
- Java
- JavaScript
- Ruby
- Kotlin(選用)
- Scala(選用)
.Net(選用;僅限部分頁面)
我們盡可能偏好提供 Java、JavaScript 和 Ruby 的資訊。
- 如果您只熟悉一種程式設計語言,請新增該語言的範例;其他人會填補其他語言的空白!
- 您可以向 Discord 上該語言的說明頻道或在您的 GitHub Pull Request/問題中請求其他語言的說明
特定語言的原始碼和段落
在段落和已加上圍籬的程式碼區塊周圍加上 {{% block %}}
簡碼
{{% block "ruby" %}}
Put this in your `hello.rb`:
```ruby
puts "hello"
```
{{% /block %}}
{{% block "javascript" %}}
Put this in your `hello.js`:
```javascript
console.log("hello")
```
{{% /block %}}
{{% block "java" %}}
Put this in your `Hello.java`:
```java
System.out.println("hello")
```
{{%/* block "kotlin" %}}
Put this in your `Hello.kt`:
```kotlin
println("hello")
```
{{% /block %}}
{{% block "scala" %}}
Put this in your `Hello.scala`:
```scala
println("hello")
```
{{% /block %}}
請注意,您不能在語言區塊內部使用標題!如果您正在撰寫包含特定語言內容的頁面,也許它應該是一個單獨的頁面。或者,您可以針對每種語言使用一個標題。
特定語言的文字片段
在僅應針對特定程式設計語言顯示的文字片段周圍使用 {{% text %}}
簡碼
The preferred build tool is
{{% text "ruby" %}}Rake{{% /text %}}
{{% text "javascript" %}}Yarn{{% /text %}}
{{% text "java,kotlin,scala" %}}Maven{{% /text %}}.
適用於多種程式設計語言的段落或文字
請注意,您也可以對適用於多種語言的段落或文字使用簡碼,而無需為每種單獨的語言重複使用。若要這麼做,請列出以逗號 (,
) 分隔的相關語言
{{% text "java,kotlin,scala" %}}Maven{{% /text %}}
其他簡碼
其他簡碼定義於 layouts/shortcodes
中。
方法與函式
為 stepdef 主體建立了一個特定的短代碼
{{% stepdef-body %}}
當使用此短代碼時,它將根據程式語言,在文字中被替換為 method
或 function
這兩個詞。
表達式參數
為表達式參數建立了一個特定的短代碼
{{% expression-parameter %}}
當使用此短代碼時,它將根據程式語言,在文字中被替換為 capture group
或 output parameter
這兩個詞。
在本機工作
有關如何在本地工作和建置專案的資訊,請參閱 README.md。