发布Atom包时如何包含静态资源

时间:2017-07-14 12:34:28

标签: npm atom-editor

我正在开发一个需要一些静态资源的Atom包。我期待以下工作:

  1. scripts.prepublish中定义package.json以调用脚本以下载外部资源
  2. 使用apm publish VERSION
  3. 在atom.io上发布Atom包
  4. 使用apm install PKGNAME
  5. 从atom.io安装Atom软件包

    不幸的是,prepublish脚本似乎没有被执行, 所以在没有静态资源的情况下安装软件包。

    奇怪的是,如果我使用apm install REPOREF而不是apm install PKGNAME安装,则会调用prepublish步骤,并且包将具有静态资源。

    package.json的相关部分:

      "name": "janos-ss-prepublish-demo",
      "repository": "https://github.com/janos-ss/prepublish-demo",
      "scripts": {
        "prepublish": "node ./scripts/setup.js"
      },
      "files": [
        "files"
      ],
    

    files这里是node ./scripts/setup.js下载静态资源的目录,如果软件包安装了npm install

    使用apm发布后,如果我使用apm install janos-ss-prepublish-demo安装软件包,似乎prepublish步骤将无法执行,并且软件包将不具有静态资源。 如果我使用apm install janos-ss/prepublish-demo安装软件包,则会执行prepublish步骤,并且软件包将具有静态资源。 注意两个apm install命令的区别,第一个使用在atom.io上发布的包的名称, 第二个使用GitHub存储库引用, 使用我的GitHub用户名和存储库的名称。

    使用apm install REPOREF进行安装不是一种选择, 因为它需要明确的用户操作,这是我不想要的。 我希望用户能够使用Atom本身的包浏览器中的自然方式从atom.io安装完整的包。

    如果我理解正确this pending pull request确认我目前无法做到的事情。我还尝试使用拉取请求中的apm自定义版本,在官方版本的基础上重新定位,但它仍然不起作用,所以我不确定我是否正确理解这里发生了什么

    我正在做的事情是否存在根本性的错误?

    是否有另一种方法可以在atom.io上的包中包含静态资源?

    我目前的解决方法是在安装并激活软件包后下载静态资源。但这在运行时是不必要的复杂性,而且很难看。

    最小可重复的包位于GitHub

    Repro步骤:

    apm publish patch
    apm install janos-ss-prepublish-demo
    ls ~/.atom/janos-ss-prepublish-demo  # error, doesn't exist
    apm install janos-ss/prepublish-demo
    ls ~/.atom/janos-ss-prepublish-demo  # exists
    

0 个答案:

没有答案