Hi!
I'm currently delving in the subject of node packaging, I have a few ideas that I might be interested in sending patches for, but I need some input before. 1) IIRC, most build-systems (except cargo at least) will not fail if some native-inputs are not present. They will fail if they are indeed necessary to build the package, but not by construction. This is not the case currently in the node-build-system. This forces us to use the delete-dependencies function very extensively, but there are a lot of cases (linters in a broad sense) where this is not necessary. Should we do like in other build-systems and add a step that would use this delete-dependencies function for all packages that are simply not node packages in inputs / native-inputs / propagated-inputs? Or sould we rather keep this explicit declaration with a need to probably also include it and a list of linters to ignore when generating a package with a potential importer? 2) Node tests will fail if there are no "test" script present. Based on the code in node-acorn, we can define a utility function that can at least check and filter-out a script in package.json. Based on this, we could avoid the need to manually enter #:tests? #f when tests are not present. 3) Likewise, the "prepare" step in an input is run in the configure phase from packages that use this input. This is probably never correct, since the input's output is fixed in the store. Using the same utility as in (2), we could add a step that would a) warn the user that a prepare step is being removed and output the content of this step. b) filter-out this step. These, and in particular (1) should make it more easy to tackle writing node packages until we can come up with a correct importer that could handle recursive import. I don't think introducing the binary importer in guix is a good idea since typescript and gulp have been successfully imported in guixrus. -- Best regards, Nicolas Graves