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和系统有了更深刻的理解。

相关文章
相关标签/搜索