NPM: How to install packages without compiling them

375 views
Skip to first unread message

Mariusz Nowak

unread,
Oct 11, 2012, 6:06:45 AM10/11/12
to nod...@googlegroups.com
I'd like to create application bundle with all it's dependencies, so it can be installed on any platform without need of internet connection (other case is that it shouldn't be dependent on npm repository state - let's say I want to be sure I can install it without issues in 5 years time).

So technically all packages with it's dependencies need to be downloaded as usually `npm install` does, but compile step shouldn't proceed.
Afterwards when I load such bundle on any platform, `npm install` should (without need of downloading anything) just compile already present packages for given platform, 

What would be the easiest way to achieve that?

Thanks!


Daniel Rinehart

unread,
Oct 11, 2012, 9:30:24 AM10/11/12
to nod...@googlegroups.com
I believe the easiest way to achieve what you want to do is by using
the "npm rebuild" command.

-- Daniel R. <dan...@neophi.com> [http://danielr.neophi.com/]
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nod...@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+un...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en

Mariusz Nowak

unread,
Oct 11, 2012, 9:49:09 AM10/11/12
to nod...@googlegroups.com
Daniel, I think 'npm rebuild' may work for installation of already created bundle, but still what's missing is how to download all dependencies into correct folders without compiling them.

Bradley Meck

unread,
Oct 11, 2012, 11:25:56 AM10/11/12
to nod...@googlegroups.com

Bradley Meck

unread,
Oct 11, 2012, 11:26:24 AM10/11/12
to nod...@googlegroups.com
Forgot to mention, bundle the dependencies on your build server.

Mariusz Nowak

unread,
Oct 11, 2012, 1:19:55 PM10/11/12
to nod...@googlegroups.com
Bradley thanks, it's probably best way to install bundle that was already prepared, but do you know the way how can I create such bundle? This is what I'm missing (!) :)

Bradley Meck

unread,
Oct 11, 2012, 3:30:12 PM10/11/12
to nod...@googlegroups.com
you can do something like

```
npm i && cat package.json | json -e "this.bundledDependencies='$(for FILE in $(ls -A node_modules); do printf "$FILE "; done)'.split(/ /)" > package.json && npm pack
```

We do something a bit more complex on our build server but this covers most cases (wont set env variables when spawning npm and such so rebuild-bundled will have to be set when you `npm i` on any other server if it has install scripts that need running even if it was bundled).

Mariusz Nowak

unread,
Oct 11, 2012, 5:07:23 PM10/11/12
to nod...@googlegroups.com
Bradley, thanks. I'll try that. Anyway it looks it needs to be done programmatically, maybe I'll come up with some neat module that would do that.

Bradley Meck

unread,
Oct 14, 2012, 9:36:50 PM10/14/12
to nod...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages