Atom飛行手冊翻譯: 4.5 ~ 4.8

開發Node模塊

Atom中的一些包是Node模塊,而不是Atom的包。若是你想要修改這些Node模塊,例如atom-keymap,你須要把它們連接到不一樣於普通Atom包的開發環境中。node

把Node模塊連接到你的Aton開發環境

下面是運行node模塊的本地版本的步驟,而不是Atom中的apm。咱們使用atom-keymap做爲一個例子:git

$ git clone https://github.com/atom/atom-keymap.git
$ cd atom-keymap
$ npm install
$ npm link
$ apm rebuild # This is the special step, it makes the npm work with Atom's version of Node
$ cd WHERE-YOU-CLONED-ATOM
$ npm link atom-keymap
$ atom # Should work!

而後,當你修改了node模塊的代碼時,你必須運行npm installapm rebuildgithub

經過服務和其它包交互

Atom包能夠經過叫作服務的帶有版本控制的APi,和其它包進行交互。在你的package.json文件中指定一個或者多個版本號來提供服務,每一個版本號都要帶有一個包的主模塊中的方法。npm

{
  "providedServices": {
    "my-service": {
      "description": "Does a useful thing",
      "versions": {
        "1.2.3": "provideMyServiceV1",
        "2.3.4": "provideMyServiceV2",
      }
    }
  }
}

在你的包的主模塊中實現上面的方法。這些方法會在一個包被激活的任什麼時候候調用,它們會使用它們的通訊服務。它們應該返回實現了服務API的一個值。json

module.exports =
  activate: -> # ...

  provideMyServiceV1: ->
    adaptToLegacyAPI(myService)

  provideMyServiceV2: ->
    myService

與之類似,指定一個或多個版本範圍來使用一個服務,每一個都帶有一個包的主模塊中的方法。安全

{
  "consumedServices": {
    "another-service": {
      "versions": {
        "^1.2.3": "consumeAnotherServiceV1",
        ">=2.3.4 <2.5": "consumeAnotherServiceV2",
      }
    }
  }
}

這些方法會在一個包被激活的任什麼時候候調用,它們會提供它們的通訊服務。它們會接受到一個通訊對象做爲一個參數。你一般須要在包提供的服務失效的時間中,進行同種類型的清除工做。從你使用服務的方法中返回一個Disposable來完成它:ide

{Disposable} = require 'atom'

module.exports =
  activate: -> # ...

  consumeAnotherServiceV1: (service) ->
    useService(adaptServiceFromLegacyAPI(service))
    new Disposable -> stopUsingService(service)

  consumeAnotherServiceV2: (service) ->
    useService(service)
    new Disposable -> stopUsingService(service)

維護你的包

雖然到目前爲止,你在開發一個包的時候,發佈是最一般的行爲,可是你還須要作一些其它的事情。ui

撤銷發佈一個版本

若是你錯誤地發佈了你的包的一個版本,或者你發現了一個顯眼的bug或安全漏洞,你可能想要撤銷這個版本的發佈。例如,若是你的包叫作package-name並且錯誤的版本是v1.2.3,你能夠執行以下命令:atom

apm unpublish package-name@1.2.3

這會從 https://atom.io/ 包註冊處移除特定的版本。任何下載了這個版本的人會依然保留它,可是它再也不對其它人提供安裝。版本控制

添加協做人

一些包對於一我的來講太大了。有時優先級會更改,或者其它人想要提供幫助。你能夠在你的包的GitHub倉庫中,經過添加它們到協做者,來讓其它人幫忙或者建立共同擁有者。注意:任何具備你的倉庫推送(push)權限的人,均可以發佈屬於這個倉庫的包的新版本。

你也能夠擁有屬於Github組織的包。任何人若是屬於一個組織,而且這個組織具備一個包所在倉庫的的推送權限,它就能夠發佈這個包的新版本。

轉移控制權

這是一個永久的改變,並且沒有辦法撤銷!

若是你想要把你的包的支持移交給其它人,你應該向新的擁有者轉移這個包的倉庫

撤銷發佈你的包

在刪除你的倉庫以前撤銷發佈你的包很是重要。若是你首先刪除了倉庫,你就會失去對包的訪問途徑,而且在沒有協助之下不能將其恢復。

若是你再也不對你的包提供支持,而且找不到任何人來接盤,你能夠從 https://atom.io/ 中撤銷發佈你的包。例如,若是你的包叫package-name,你能夠執行以下命令:

apm unpublish package-name

這個命令會從 https://atom.io/ 包註冊處移除你的包。任何下載了你的包的副本的人依然會保留,以及可以使用它,可是它再也不對其它人提供安裝。

重命名你的包

若是因爲任何緣由你須要重命名你的包,你可使用一條簡單的命令apm publish --rename,來修改你的包的package.json文件中的name字段,推送(push)一個新的提交(commit)和打上標籤(tag),以及發佈重命名以後的包。向以前名字發送的請求會重定向到新的名字。

一旦一個包的名稱被使用,它就不能其它包複用,即便原來的包撤銷了發佈。

apm publish --rename new-package-name

小結

如今你應該對Atom核心APi和系統有了更深刻的理解。

相關文章
相關標籤/搜索