From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id cDpsLwA23GFrqgAAgWs5BA (envelope-from ) for ; Mon, 10 Jan 2022 14:34:56 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id sG5UKAA23GHO9QAAG6o9tA (envelope-from ) for ; Mon, 10 Jan 2022 14:34:56 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id CB8B4219E4 for ; Mon, 10 Jan 2022 14:34:55 +0100 (CET) Received: from localhost ([::1]:54948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n6up4-000274-S4 for larch@yhetil.org; Mon, 10 Jan 2022 08:34:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6uoG-00023X-2O for help-guix@gnu.org; Mon, 10 Jan 2022 08:34:06 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:59021) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n6uoE-0003xX-0b for help-guix@gnu.org; Mon, 10 Jan 2022 08:34:03 -0500 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id 6E8E75C00C5 for ; Mon, 10 Jan 2022 08:33:54 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 10 Jan 2022 08:33:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fullmeta.me; h= from:to:subject:date:message-id:mime-version:content-type; s= fm3; bh=oXwoJZh3GgfHE+Dj37vw20kUsL/+QGMimVYi3r7TbQo=; b=IxgiveXf Fz7yh9GbV9QKddDZJmXTe0nfF77Am4FVu2lowWLcJvVZifgUWdc/usVC8wMfHmKy q/mv5ik2MM7slvMuSarAhUn+Abi08hMPAdVJl9qNfwPdAX7PLhdmh539TViR7SaQ cbpUtQ3DDuRAPbn964EAemusEFEp4E53mkAATmB+nornFX33tTRwJKNKNptLSVHa iNb10AIpqO9ru1VmUVb6w/FdzUMNJnfDshkInNVFLusGQdquwxEgqMR1F1bjHrm9 brr+lzJGpHm/yXjSew6WXXAFd8+9zg9YrAdiU2Y+UXh2BSayJi2oRCAcT6+llx9Z kV9WMK0qdXt6CQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=oXwoJZh3GgfHE+Dj37vw20kUsL/+Q GMimVYi3r7TbQo=; b=Q5YTvNTj5zTOq5d0X1JlI/iW/wWwIABhmEhqmh1zC94xL MLtM/IZZWROmuJcJnz5rIWIQ5bIWoC63bCFLihl5DNOp5G3Rau4SMFgZtFNyYpa/ +s5uw+1KSgoo6hKJZ5KJ5Si0azLP14dIq2QDHXBTvR/K41P91MOyCtmeioBliGOT N1IJ49+LXEjY5xsCIziL2bo4Oo4M/Ox83IydbvRTlrZLHiCC9UMjhFwG7PjQX/US kf90ns2XwFDPA/zDXvOlCRemFa5rzQ9/QZyesyTFiStHqfANlsSgSk6ouJMdQM+r /Twm13EUPyovY+vjU6iPAf/YJDn2+RZq975tNWtsQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddrudehuddgvdelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegfhffvufffkfggtgesthdtredttd ertdenucfhrhhomhepthesfhhulhhlmhgvthgrrdhmvgenucggtffrrghtthgvrhhnpeei geduieelgeehleeuteekudffvdejveduvddvvdetgeegfffgtdefveeivdehgeenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehtsehfuhhllhhm vghtrgdrmhgv X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 10 Jan 2022 08:33:53 -0500 (EST) Received: from localhost (localhost [local]) by localhost (OpenSMTPD) with ESMTPA id 4bec85d7 for ; Mon, 10 Jan 2022 13:33:51 +0000 (UTC) User-agent: mu4e 1.6.9; emacs 28.0.50 From: t@fullmeta.me To: help-guix@gnu.org Subject: Web development on Guix: nodejs, npm and all that Date: Mon, 10 Jan 2022 13:17:56 +0000 Message-ID: <87y23niukg.fsf@fastmail.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed Received-SPF: pass client-ip=66.111.4.25; envelope-from=t@fullmeta.me; helo=out1-smtp.messagingengine.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1641821696; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=oXwoJZh3GgfHE+Dj37vw20kUsL/+QGMimVYi3r7TbQo=; b=aK2ICS7LbTF2+E6+ka4N8MqK8K9sUgxZYgRBZ1vQQmqVgrrAdfl7tBuBJSLzKtwrt7J57o HNxfyF/aCltb9/Klrg5svFTjK+pX13P7zWGhTXitwYGGIx6YGYXv2Qd2BR+WuBKsaXnK/n OAI7+21f69Mc54vXpN+tcN0aPpnjiL9BVZWfjmi2pTDhTtmufMtHwwZBUA+FG7tkp4i2FA 7pItf63soOShY3qCrjsMkvLWbWf23eu43aBVvz0/lM3WkL3H01BVRag5n5Zz7PHey5Gti7 uGQaOXRHEINz/geiJ+q6H/7hmVL65ZxYLpEasFt9F0guQXqxbBXN4+gULKiEiw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1641821696; a=rsa-sha256; cv=none; b=DC4SsT805lkDVeLDL3yrfwWUAnSIkCA9+YZJrcVFxJ8kYxOyvJ3BYDEXbJiASnWQM2zHNW mLZKT/tgYRUg1sJ2weTAYv5E+hGCur+k9ceRfilCdHgxWCo0ZghEgK5TJtuP+8q5Arjs+t WUV9lhdBjwBGTsqp4kK97mKAhUYP+no+AthkgpW0Lgq5FdpN7VnGux8OE4xqJaICXW9amy nuo2ZUfW05P/79aQJU5WKjzETM6lUxPbYiQSu1rK7QcZW55m3hicR/9RwwLLwFhzQtrXn3 tRwe1xu5vDIkDIVp+rc/LTF9qEZrdacj/cjxbpW2RPzNvRvckoWijFIFTfRhMQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=fullmeta.me header.s=fm3 header.b=IxgiveXf; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=Q5YTvNTj; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -6.81 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=fullmeta.me header.s=fm3 header.b=IxgiveXf; dkim=pass header.d=messagingengine.com header.s=fm1 header.b=Q5YTvNTj; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: CB8B4219E4 X-Spam-Score: -6.81 X-Migadu-Scanner: scn0.migadu.com X-TUID: kUwoVnuyoKoC Hi Guix. Do people do web-dev on Guix System? I need to dive back into the whole Node.js NPM ecosystem - something I've not touched for some years and I'm wondering how people go about e.g. installing NPM packages on Guix. I started by reading (guix build node-build-system) as one does. I think I have a decent grasp on exactly how it goes about installing those NPM dependencies. Unsurprisingly you need to package all those dependencies as Guix packages, then supply them as inputs, whereupon the extra 'patch-dependencies phase will actually lookup those packages in your inputs and replace deps paths under "dependencies", "devDependencies", "peerDependencies" with store items as needed. Configure phase actually runs local install with --offline and --ignore-scripts which is understandable followed by build phase which does npm run build where the script is available. Followed by some tar and npm install from local package dance, which I don't fully understand, but I get the general idea and where we end up (I still haven't a clue what 'set-home phase does and why). This is all very cute and reproducible, but ... JS web developers aren't exactly known for avoiding dependencies. Even just getting express-js to run would require me to package ungodly number of those dependencies. If guix repo is indicative, looks like I'm not the only one to realise packaging those would be too much work unless the entire community somehow decides to come together and do an "NPM Summer of Hard Unpaid Labour". So, how do people program for the Web, Node on Guix. Does =npm install= which defaults to local installation work well enough for most packages? An outline of what to expect and known problems and workarounds would be very useful. Thank you