unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Julien Lepiller <julien@lepiller.eu>
To: swedebugia <swedebugia@riseup.net>, guix-devel@gnu.org
Subject: Re: NPM importer
Date: Tue, 20 Nov 2018 23:35:45 +0100	[thread overview]
Message-ID: <20181120233545.16257e58@lepiller.eu> (raw)
In-Reply-To: <23f36a0d-a5ef-5457-1d8e-61fbebda91c4@riseup.net>

Le Tue, 20 Nov 2018 22:12:18 +0100,
swedebugia <swedebugia@riseup.net> a écrit :

> Hi
> 
> On 2018-11-20 20:58, swedebugia wrote:
> > On 2018-11-20 08:50, Julien Lepiller wrote:  
> 
> snip
> 
> >> See this script that builds a graph of dependencies, ignoring 
> >> devDependencies (so none of the packages listed by this script is 
> >> going to be tested):
> >> https://framagit.org/tyreunom/guix/snippets/2534  
> 
> What is devDependencies? Required to build the npm package?

the package.json file declares two kinds (I think I've seen a third
kind, but I'm not sure, nor am I a js developper) of dependencies:
dependencies and devDependencies that map to our inputs and
native-inputs. devDependencies are tools used during the build or
development, but they are not needed at runtime. Sometimes, they are
required at build time (for instance the coffeescript compiler is a
devDependencies of some packages, but we need it to build the package),
usually they are required at test time (for instance mocha, tap, or
tape are test frameworks), otherwise, they can be documentation tools,
and sometimes really not useful for us (we probably don't want to run
linters or release-related tools).

> 
> I understood the script now I think. :)
> 
> I replaced "mocha" with name in the call in the bottom.
> 
> Then did:
> $guile
> scheme@(guile-user)> (define name "ssb-patchwork")
> scheme@(guile-user)> (load "npm-explorer.scm")
> ...

The way I wrote it, you were supposed to change the "mocha" with the
package you're interested in, and run the script with guile like so:

guile npm-explorer.scm > mocha.dot

and then:

fdp -Tpng mocha.dot > mocha.png

(fdp is part of graphviz, but produces nicer graphs than dot in my
opinion)

> 
> As you said it runs for(ever) (in my case 5 minutes) listing 
> dependencies of dependencies of dependencies of dependencies of 
> dependencies of dependencies ...
> 
> 1100 last lines of the output is attached. :p
> 
> One thing is for sure. There are a LOT of npm packages. "Over 477,000 
> packages are available on the main npm registry." according to WP. :O

That's probably the number of packages on which depend any node
packages through its dependencies and devDependencies... I suspect you
can always find a path between any two packages in this graph... in
either direction.

> 
> I wonder how many are free software? 90%? 50%?
> 
> I hope we can automate this some way.

It looks very difficult, but if you have any ideas, please tell us!

> 
> npm.scm will be a VERY VERY long file. Maybe we should rethink about
> how to best store all these variables...

Very long files are frowned upon, because they have very long
compilation times and require a lot of memory. We'll have to find a way
to split the file before it grows too much. Maybe we will do something
similar than python packages? We have python.scm, python-web.scm...

> 
> Just 1 npm application (ssb-patchwork) will add at least 1000 package 
> definitions to it.
> 

  reply	other threads:[~2018-11-20 22:36 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-11 10:41 NPM importer swedebugia
2018-11-11 15:37 ` Julien Lepiller
2018-11-19 23:29   ` swedebugia
2018-11-20  7:50     ` Julien Lepiller
2018-11-20 19:58       ` swedebugia
2018-11-20 21:12         ` swedebugia
2018-11-20 22:35           ` Julien Lepiller [this message]
2018-11-21 15:36             ` swedebugia
2018-11-21  1:41           ` Mike Gerwitz
2018-11-21 22:01             ` Brett Gilio
2018-11-21 23:22               ` swedebugia
2018-11-22  1:02                 ` swedebugia
2018-11-22  5:43                   ` Brett Gilio
2018-11-22 11:27                     ` import libjs-*.deb from Debian? (was Re: NPM importer) Giovanni Biscuolo
2018-11-30  3:23                       ` Ricardo Wurmus
2018-11-22  8:36                   ` NPM importer Julien Lepiller
2018-11-24 13:47                     ` swedebugia
2018-11-23 19:50                   ` swedebugia
2018-11-30  3:17                     ` Ricardo Wurmus
2018-11-30 14:17                   ` Packaging async and underscore (Was: Re: NPM importer) swedebugia
2018-11-30 16:08                     ` Packaging async and underscore Julien Lepiller
2018-11-30 16:44                       ` swedebugia
2018-11-24 13:42       ` NPM importer swedebugia
2018-11-30 16:13   ` Improved NPM importer with blacklist (Was: Re: NPM importer) swedebugia
2018-11-30 16:24     ` Improved NPM importer with blacklist Julien Lepiller
2018-11-30 17:20       ` swedebugia
2018-11-30 23:27     ` Improved NPM importer with blacklist (Was: Re: NPM importer) swedebugia
2018-11-11 17:10 ` NPM importer Ludovic Courtès
2018-11-21 16:37   ` Giovanni Biscuolo
2018-11-21 17:15     ` Julien Lepiller
2018-11-22  9:29       ` Giovanni Biscuolo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181120233545.16257e58@lepiller.eu \
    --to=julien@lepiller.eu \
    --cc=guix-devel@gnu.org \
    --cc=swedebugia@riseup.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).