NPM & Laravel

Technische problemen? Hier kun jij jouw vragen stellen!
Forumregels
Check eerst onze helpsectie (https://www.antagonist.nl/help) voordat je hier een vraag stelt. Voor de meeste vragen hebben we uitgebreide handleidingen met uitleg.
Plaats reactie
Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

NPM & Laravel

Bericht door Notify » 03 sep 2022, 16:22

Beste Mede ontwikkelaars.

Ik ben momenteel veel bezig in Laravel en NPM.
Bijna altijd compile ik mijn assets lokaal.

Nu wil ik voor 1 of meerder applicaties de assets op de server generen, dit omdat er vrij veel instellingen zijn waardoor de assets opnieuw gegenereerd moeten worden.

Lokaal kan ik uiteraard gewoon "npm install" & "npm run prod" gebruiken.
Nu vroeg ik mij af hoe ik dit kan uitvoeren op de server, aangezien er wel Node JS is geïnstalleerd maar via SSH niet zo toegangkelijk.

Daarbij wel de opmerking dat ik mijn applicaties automatische deploy vanuit Github en NPM via een schell script aanroep, ook vanuit de applicatie word er een schel script aangeroepen met "npm run prod". (Zodra ik een merge doe van mijn dev naar acceptatie of productie bij github word mijn applicatie geautomatiseerd geupdate zonder tussenkomst van mij)

Moet ik hiervoor een Node.js Applicatie instellen, en zo ja (Uiteraard al geprobeerd) krijg ik de error dat laravel mix niet gevonden kan worden. ook mis ik de node_modules in mijn applicatie folder.

Alvast bedankt voor jullie reactie.

Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

Re: NPM & Laravel

Bericht door Notify » 05 sep 2022, 01:39

Na enig onderzoek heb ik het voor elkaar, maar dit is voor mij geen permanente oplossing.

Wat heb ik gedaan:
  • - Een node JS applicatie opgezet
  • - Node js applicatie heeft een domeinnaam welke niet gebruikt word
  • - Nu heb ik in mijn deployment een regel staan welke eerste de virtual environment aanroept, daarna naar mijn laravel applicatie gaat en dan pas npm run dev uitvoert
Ik heb hier een hele vieze workaround gebruik waar ik ook graag vanaf wil.
Uiteraard sta ik open voor een veel makkelijkere en betere oplossing dan wat er nu gebeurt.

Mocht iemand de tip hebben om gewoon NPM aan te kunnen roepen via SSH of Shell dan hoor ik het graag.

Waarom een andere werkwijze als dit werk vragen jullie je af.
Ik werk via OTAP, concreet houd dit in dat ik per applicatie een acceptatie & productie omgeving heb welke een andere regel moet uitvoeren om naar de juiste directory te gaan om npm uit te kunnen voeren.
Daarnaast als ik meerdere applicaties heb, dan moet ik per applicatie een nieuwe node js server opzetten om mijn assets specifiek voor die applicatie te kunnen installeren.

Voor 1 applicatie waarbij niet veel ontwikkeld word is dit nog te doen, maar het blijft in de geval niet bij 1 applicatie omdat ik meerdere applicaties voor een klant moet ontwikkelen.

Alvast bedankt voor jullie reactie.

Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

Re: NPM & Laravel

Bericht door Notify » 14 sep 2022, 01:48

Helaas probeer ik dezelfde stappen uit te voeren als ik beschreven heb.
Alleen word de package.json niet gehanteerd van de omgeving waar ik dit draai.

Op een of andere manier word er een volledig andere (geen idee welke) package.json uitgevoerd voor het installeren van mijn mijn node_modules.

Iemand hier een oplossing?

Mark Boom
Antagonist staff
Berichten: 8
Lid geworden op: 02 mar 2022, 09:38

Re: NPM & Laravel

Bericht door Mark Boom » 14 sep 2022, 11:28

Op het moment dat je de "neppe" Node applicatie met niet-bestaande domeinnaam aanmaakt, wordt er ook een map voor de bestanden van die applicatie aangemaakt. Noem je de de applicatie "x", dan zal die map standaard "/home/deb12345/x" zijn. Als het goed is, maakt de virtualenv gebruik van de package.json in die map. Die map heet de "Application root" binnen de Node selector.

Ik vermoed, dat jij mogelijk je echte applicatiebestanden niet in die map plaatst, maar een andere? Dan kun je het mogelijk oplossen door die "Application root" in de Node selector te wijzigen naar waar je applicatie zich daadwerkelijk bevindt.

Hier lees je daar meer over, en vind je ook wat screenshots:
https://help.antagonist.nl/hc/nl/articles/8523768941457

Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

Re: NPM & Laravel

Bericht door Notify » 14 sep 2022, 14:04

Hallo Mark,

Dat is nu net het probleem, de package.json word niet gehandhaafd.
Ik heb namelijk een acceptatie en Productie omgeving (gebruiken dezelfde package.json)
Op acceptatie worden wel netjes de bestanden ingeladen/ op development absolute niet.
De Packaga.json staat in de root van de "node" applicatie.

Ik heb dus 3 identieke package.json (Acceptatie / Development / NodeJs App)

Mark Boom
Antagonist staff
Berichten: 8
Lid geworden op: 02 mar 2022, 09:38

Re: NPM & Laravel

Bericht door Mark Boom » 19 sep 2022, 15:23

Je hebt dus drie identieke maar aparte package.json bestanden, die in 3 identieke maar aparte application roots staan, die 3 aparte applicaties in de Selector zijn? Dus je hebt in de selector (bijvoorbeeld):

myapp_dev => /home/debXXX/myapp_dev [/package.json]
myapp_accept => /home/debXXX/myapp_accept [/package.json]
myapp_prod => /home/debXXX/myapp_prod [/package.json]

(achter de => is de Application root in de selector)

Begrijp ik dat zo goed?

Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

Re: NPM & Laravel

Bericht door Notify » 20 sep 2022, 01:10

Beste Mark,

Dit is helemaal correct.
Ondertussen naar meerdere opties bekeken te hebben blijkt het aan het "platform" te liggen.

Voor het installeren van dependecies gebruik ik nu inplaats van "npm install" => "yarn install --ignore-engines"
Bij het gebruik van --ignore-engines worden wel alle packages geïnstalleerd.

Daarna kan ik nu zonder problemen gebruik maken van npm run prod.

Enige waar ik nu wel mee zit is dat ik dus ook 2 / 3 keer een map met node_modules heb.
Is hier toevallig nog ergens een oplossing voor aangezien dit wel ontzettend veel bestanden op de server zet.

Hierdoor dreig ik het limit van inodes te raken bij het uitrollen van een nieuwe applicatie.

Alvast bedankt voor je reactie.

Mark Boom
Antagonist staff
Berichten: 8
Lid geworden op: 02 mar 2022, 09:38

Re: NPM & Laravel

Bericht door Mark Boom » 20 sep 2022, 12:46

Mooi dat het lijkt te lukken. Ja, inodes zijn als je met drie verschillende Node omgevingen werkt op een gegeven moment wel vervelend. Er is daar helaas ook niet een kant-en-klare fix voor; zie ook https://stackoverflow.com/q/36710571. Het enige wat ik je kan aanbevelen is om minder omgevingen in totaal te hebben (dus bijvoorbeeld dev, gewoon lokaal op je laptop te draaien). Heb je echt verschillende (grotere) webapplicaties, is het sowieso verstandiger die op aparte pakketten te draaien.

Notify
Berichten: 19
Lid geworden op: 18 okt 2016, 18:31

Re: NPM & Laravel

Bericht door Notify » 22 sep 2022, 21:00

Mark Boom schreef:
20 sep 2022, 12:46
Mooi dat het lijkt te lukken. Ja, inodes zijn als je met drie verschillende Node omgevingen werkt op een gegeven moment wel vervelend. Er is daar helaas ook niet een kant-en-klare fix voor; zie ook https://stackoverflow.com/q/36710571. Het enige wat ik je kan aanbevelen is om minder omgevingen in totaal te hebben (dus bijvoorbeeld dev, gewoon lokaal op je laptop te draaien). Heb je echt verschillende (grotere) webapplicaties, is het sowieso verstandiger die op aparte pakketten te draaien.
Hallo Mark,
Om nog even terug te komen op het aantal bestanden op een server.
Ik zie voor Node een groot probleem.

De map "nodevenv/****/*nodeversie/lib/node_modules" staan alle node modules alsook in de applicatiemap zelf.
Dit houd dus in dat alle node_modules dubbel op de server staan en 2x meetellen voor de applicatie.

Dit lijkt mij niet correct?

Plaats reactie