我正在开发一个需要一些静态资源的Atom包。我期待以下工作:
scripts.prepublish
中定义package.json
以调用脚本以下载外部资源apm publish VERSION
apm install PKGNAME
不幸的是,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