Problem using node-gyp based modules


#1

I am a little bit confused about how apm and atom-shell work. In my atom-shell project I have a package.json that looks something like:

...
  "dependencies": {
    "nino": "0.0.9"
  },
  "engines": {
    "atom": ">0.50.0"
  },
...

where “nino” is https://github.com/wbw20/nino, a package that I am working on that relies on “serialport”, which is a node-gyp package. When I boot my atom-shell application, I get a dialog that says “this is not a valid atom-shell application…”.

Is this most likely happening because I am using a node-gyp dependancy? I tried pushing a nino tag release to apm, which you can see here. Still, though, it doesn’t work. Any ideas?


#2

Atom and Atom Shell are not the same thing; Atom runs inside the Atom Shell framework.
apm works together with Atom, not Atom Shell. And as such, apm is only meant for Atom packages. There is no such thing as an Atom Shell package.


#3

Doesn’t this doc say to use apm for atom-shell native dependencies?

https://github.com/atom/atom-shell/blob/master/docs/tutorial/use-native-node-modules.md


#4

That’s basically a hack to get node modules working correctly, because Atom Shell uses a custom version of V8. You can also use node-gyp to install native node modules. There is no support for using Atom packages inside of Atom Shell. The latter is exactly as the name suggests, a shell. The Atom API where the concept of a package is implemented, is a part of Atom not Atom Shell.


#5

Makes perfect sense. Thanks!