I think the supposed workflow with the new npm.class was to use 'devtool
create' which would run some npm magic to to create a single recipe that
has all of the npm-fetched dependencies inside SRC_URI. Have you tried that?

A layer with thousands of recipes seems totally intractable.

Alex

On Tue, 5 Oct 2021 at 14:48, Stefan Herbrechtsmeier <
stefan.herbrechtsmeier-...@weidmueller.com> wrote:

> Hi Richard,
>
> Am 05.10.2021 um 13:09 schrieb Richard Purdie:
> > Thanks for bring this up, I've been wondering on the status of our npm
> support.
>
> Do you know any npm users?
>
> > On Tue, 2021-10-05 at 12:04 +0200, Stefan Herbrechtsmeier wrote:
> >> I must improve the npm support for our use cases but need some
> >> fundamental decisions to proceed. I need to build express and angular
> >> applications from git repositories.
> >>
> >> I have the following changes in my pipeline until now:
> >> - Support npm packages with missing execute mode for directories
> >> - Reduce command calls in npm run
> >> - Add support for local tarball and local link sources
> >> - Rework crunch license to recognize more variants
> >> - Move known license checksums to CSV file
> >> - Pass README as fallback to guess license if a license is missing
> >> - Add support to pass build arguments to npm install
> >> - Add support to run build scripts with native packages
> >> - Parallelize the populate of the npm cache
> >>
> >> The build (install) of npm packages leads to problems because of old
> >> versions in the dependency tree. For example, older versions of packages
> >> are incompatible with the Node.js version and older versions of node-gyp
> >> require Python 2.
> >
> > Hopefully over time the python2 issue should reduce and fade at least.
> The
> > node.js version is trickier.
>
> The current implementation works like an project with embedded external
> dependencies. I both cases I have to patch the embedded dependencies or
> replace them with external DEPENDS.
>
> >> I see three solutions to integrate npm packages:
> >> - Build npm packages from the npm project outside of OE and only fetch
> >> the data.
> >> - Fork the npm project repository and fix everything inside the fork.
> >> Use the fork direct or create patches from the fork to build inside OE.
> >> - Create recipes per project and incompatible version to fix everything
> >> in OE and reduce redundancy.
> >>
> >> The last solution keeps everything in OE and benefit from the existing
> >> OE functions like download proxy as well as license, CVE and version
> >> check. But it increases the initial costs and makes only sense if there
> >> is an interest in an meta-nodejs layer.
> >
> > The latter solution sounds like the only really viable option from an OE
> > perspective since we do need the proxy/CVE/license handling, it is a
> huge part
> > of our value and without it, it isn't really OE.
>
> The problem are the many different packages. An Angular project could
> have more than 1000 different project. Thereby some dependencies only
> differ in the version or needed only for development like a development
> server or a unit test framework.
>
> > Creating a meta-nodejs layer isn't an issue if there are people willing
> to look
> > after it.
>
> Is a layer with more more than 1000 recipes thinkable?
>
> Regards
>    Stefan
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#156646): 
https://lists.openembedded.org/g/openembedded-core/message/156646
Mute This Topic: https://lists.openembedded.org/mt/86089523/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to