tag:github.com,2008:/just-talks/nodejs/discussions
Recent discussions in just-talks/nodejs
2023-06-24T06:52:33+00:00
tag:github.com,2008:5332077
node 的包管理器:fnm
2023-06-24T06:52:32+00:00
2023-06-24T06:52:33+00:00
adoyle-h
https://github.com/adoyle-h
<p dir="auto"><a href="https://github.com/Schniz/fnm">https://github.com/Schniz/fnm</a> 是用 rust 实现的,比 nvm 快多了。<br>
我测了一下,加载 fnm 的 shell 启动脚本需要 25ms,而 nvm 的 shell 启动脚本需要 300ms。</p>
<p dir="auto">另外它支持切换目录后识别 <code class="notranslate">.node-version</code> 或 <code class="notranslate">.nvmrc</code> 来自动切换当前的 node 版本。</p>
tag:github.com,2008:5123695
NodeJS 18.16.0 支持了 SEA
2023-04-24T07:53:26+00:00
2023-04-24T07:53:27+00:00
adoyle-h
https://github.com/adoyle-h
<p dir="auto">2023-04-12 发布了 NodeJS 18.16.0,自此支持了 SEA 特性。<br>
SEA 是 Single Executable Application 的缩写,意思是 nodejs 可以把项目所有文件编译成一个可执行文件。</p>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$ echo 'console.log(`Hello, ${process.argv[2]}!`);' > hello.js
$ cp $(command -v node) hello
# On systems other than macOS:
$ npx postject hello NODE_JS_CODE hello.js \
--sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2
# On macOS:
$ npx postject hello NODE_JS_CODE hello.js \
--sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \
--macho-segment-name NODE_JS
$ ./hello world
Hello, world!"><pre class="notranslate">$ <span class="pl-c1">echo</span> <span class="pl-s"><span class="pl-pds">'</span>console.log(`Hello, ${process.argv[2]}!`);<span class="pl-pds">'</span></span> <span class="pl-k">></span> hello.js
$ cp <span class="pl-s"><span class="pl-pds">$(</span>command -v node<span class="pl-pds">)</span></span> hello
<span class="pl-c"><span class="pl-c">#</span> On systems other than macOS:</span>
$ npx postject hello NODE_JS_CODE hello.js \
--sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2
<span class="pl-c"><span class="pl-c">#</span> On macOS:</span>
$ npx postject hello NODE_JS_CODE hello.js \
--sentinel-fuse NODE_JS_FUSE_fce680ab2cc467b6e072b8b5df1996b2 \
--macho-segment-name NODE_JS
$ ./hello world
Hello, world<span class="pl-k">!</span></pre></div>
<p dir="auto">详见 <a href="https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V18.md#2023-04-12-version-18160-hydrogen-lts-danielleadams">changelog</a>。</p>
<p dir="auto">原理大概是编译好的可执行文件里自带了虚拟文件系统,项目源码里的 .js, .json 这些文件统统序列化成二进制。参考资料:</p>
<ul dir="auto">
<li><a href="https://github.com/nodejs/single-executable/blob/main/blog/2022-08-05-an-overview-of-the-current-state.md">https://github.com/nodejs/single-executable/blob/main/blog/2022-08-05-an-overview-of-the-current-state.md</a></li>
<li><a href="https://github.com/nodejs/single-executable">https://github.com/nodejs/single-executable</a></li>
<li><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1411616479" data-permission-text="Title is private" data-url="https://github.com/nodejs/node/issues/45038" data-hovercard-type="pull_request" data-hovercard-url="/nodejs/node/pull/45038/hovercard" href="https://github.com/nodejs/node/pull/45038">nodejs/node#45038</a></li>
</ul>
tag:github.com,2008:4919319
Node 官方出品的包管理器的管理器:corepack
2023-03-02T18:02:36+00:00
2023-03-02T18:02:37+00:00
adoyle-h
https://github.com/adoyle-h
<p dir="auto"><a href="https://github.com/nodejs/corepack">https://github.com/nodejs/corepack</a></p>
<p dir="auto">现在 node 生态的包管理器五花八门。npm,yarn1,yarn2,yarn3,yarn4(已经是 rc 版本),<a href="https://pnpm.js.org/" rel="nofollow">pnpm</a>……</p>
<p dir="auto">corepack 可以帮你安装这些包管理器。不过目前只支持 yarn 和 pnpm。<br>
corepack 可以使用<a href="https://github.com/nodejs/corepack#when-authoring-packages">在 package.json 中设定的包管理器版本</a>。</p>
<p dir="auto">node 自 v14.19.0 和 v16.9.0 起就自带了 corepack ,之前的版本可以通过 <code class="notranslate">npm install -g corepack</code> 安装。</p>
<p dir="auto">参考<a href="https://dev.to/cloudx/corepack-the-node-js-manager-of-package-managers-44dd" rel="nofollow">文章</a> (<a href="https://web.archive.org/web/20230213031857/https://dev.to/cloudx/corepack-the-node-js-manager-of-package-managers-44dd" rel="nofollow">链接备份</a>) ,需要翻墙访问。</p>