タグ

node.jsに関するmizdraのブックマーク (210)

  • yarn と npm の栄枯盛衰

    yarn と npm の栄枯盛衰2021 年 8 月に yarn の v3 がリリースされました。2020 年の同月あたりに yarn v2 がリリースされたので、約 1 年ぶりのメジャーバージョンアップになります。 v1 → v2 のパラダイムシフトは強烈でしたが、 v2 → v3 は berry というパッケージ名は相変わらずで、 v2 の正統なバージョンアップでありちょっとだけ物足りなさを感じてます。 Get Started なにはともあれ、とりあえずは触ってみましょうか。 Node.js ≥ 16.10 であれば、 Corepack を使って以下のコマンドで yarn v3 をインストールできます。 $ corepack enable $ corepack prepare yarn@3.0.0 --activate # yarn.lock や README.md が生成される $

    yarn と npm の栄枯盛衰
  • Docker Buildにおけるリードタイム短縮のための3つの改善ポイント | PLAID engineer blog

    Dockerfile効率化のベストプラクティスを、リードタイム(CI/CDの実行時間)を短縮し開発生産性を向上させる為に行うべき事という観点でまとめました。 1.Docker Daemonへの転送ファイル削減 2.Docker Imageのサイズ削減 3.cacheの有効活用

    Docker Buildにおけるリードタイム短縮のための3つの改善ポイント | PLAID engineer blog
    mizdra
    mizdra 2022/01/18
    分かりやすい
  • Node.js の assert の小話 - from scratch

    Node.js Advent Calendar の4日目の記事 です。 Node.js の assert は結構歴史が深いです。あまり直接使ってる人は少ないかもしれません。使うとしたら test で使ったりするケースでしょうか。 それも最近は jest に生えてる便利ライブラリを使うほうが多いのかもしれないですね。 unassert なんかで開発中に埋め込んでいるケースもあるかもしれません。このようにたまに使うこともあると思うので、覚えておくと良いでしょう。 assert には 4 年ほど前から strict assertion mode というのが追加されています。 nodejs.org 今日はそんな小話を。 require("assert") は直接使ってはいけなかった。 もう昔の話ですが、 require("assert") が deprecated になっていた時期がありました。知

    Node.js の assert の小話 - from scratch
    mizdra
    mizdra 2021/12/27
    assert/strict 知らなかった
  • Pure ESM package

    esm-package.md Pure ESM package The package that linked you here is now pure ESM. It cannot be require()'d from CommonJS. This means you have the following choices: Use ESM yourself. (preferred) Use import foo from 'foo' instead of const foo = require('foo') to import the package. You also need to put "type": "module" in your package.json and more. Follow the below guide. If the package is used in

    Pure ESM package
  • Node Modules at War: Why CommonJS and ES Modules Can’t Get Along

    Dan Fabulich is a Principal Engineer at Redfin. (We’re hiring!) In Node 14, there are now two kinds of scripts: there are old-style CommonJS (CJS) scripts and new-style ESM scripts (aka MJS). CJS scripts use require() and module.exports; ESM scripts use import and export. ESM and CJS are completely different animals. Superficially, ESM looks very similar to CJS, but their implementations couldn’t

    Node Modules at War: Why CommonJS and ES Modules Can’t Get Along
  • Node.js の import.meta.resolve について

    先日 import.meta について調査して人に話す機会があり HTML(Web) と Node.js の各ホストの import.meta がどのようなオブジェクトを返すのかを調査していた。そのときは、「HTML でも Node.js でも import.meta.url だけが生えていて〜〜」という話をしてしまった。 後になって知ったのだが、Node.js には import.meta.url 以外にも import.meta.resolve というプロパティが実装されている。 この記事では Node.js に実装されている import.meta.resolve について解説する。 なお、import.meta.url はまだ Stability 1 の API なので、今後仕様が変わる可能性があることに注意してほしい。 import.meta について まず import.met

    Node.js の import.meta.resolve について
  • Node.js や deno に Web Standard な API をなんでも取り入れるのが良いことなのかについて - from scratch

    この記事は Node.js Advent Calendar の 11 日目の記事です。 qiita.com Web API と Node.js ES2015 以前の Node.js は Web Standard な API の中で足りないものを自分で補う形で進化を続けてきた。 Callback や Event 主体での非同期処理や Common JS な形でロードできる独自のモジュールの仕組みがその筆頭だと思う。ただ逆に Web Standard な API が流行ると今度はそれに追従していかないといけなくなってきた。 ES2015 以後に流行ったものといえば、 Promise 主体での非同期処理であり、 async-await での処理だと思う。また、 ES Modules の台頭もあり、今日では Node.js でも普通に呼び出すことが可能になった。 今ではどちらも Node.js で

    Node.js や deno に Web Standard な API をなんでも取り入れるのが良いことなのかについて - from scratch
    mizdra
    mizdra 2021/12/14
    良い
  • Between the Wires: An interview with open source developer Sindre Sorhus

    By Vivian Cromwell Here’s my interview Sindre Sorhus, a prolific open source developer who lives in Thailand. Tell us a little bit about your childhood and where you grew up. I grew up in a suburban area outside Oslo, Norway. When I was little, I was really interested in Legos. Every year I would get Legos for birthday and Christmas. Legos really sparked my interests in building things early on. A

    Between the Wires: An interview with open source developer Sindre Sorhus
    mizdra
    mizdra 2021/12/12
    1000 を超える npm packages をメンテナンスする sindre 氏のインタビュー。面白かった。
  • Node.jsのスーパープログラマ達の今 - @ledsun blog

    僕がNode.jsを熱心に勉強していた頃に、スーパープログラマとして憧れていた人たちが、今何をやっているのか調べてみました。 github.com Express.jsなんかを作っていたtjは、Go言語がメインに書いているようです。 OSS活動自体あまりやっていなさそうです。 github.com Browserifyをつくっていたsubstackは、主にrustを書いているようです。 サーバーを書いていた人はGo言語に、CLIを書いていた人がrustに行くのかもしれません。 github.com Babelを書いていたsebmckもrustです。 github.com Rad VaggはGo言語とPythonのようです。 github.com tjfontaineはOSS活動がほとんど無くなっています。 ここからはNode.jsを去っていない人たちです。 github.com Guill

    Node.jsのスーパープログラマ達の今 - @ledsun blog
  • 中華製npmを知ってますか?! cnpmを紹介(ネタ) - Qiita

    Node.jsアドベントカレンダー21日目になります。 npmといえば、Node.jsやフロントエンド開発で欠かせないツールですよね。そんな npm中国版があることをご存知でしょうか。 仕事柄、中国に行ったり、中国にいる人とやりとりしたりすることがありますが、その辺に関連した話です。実用性はほぼ無いので話のネタだと思ってもらえると幸いです。(アドカレ遅刻すみません) IoTLT vol70で話をしたネタです。 スライドはこちら npmが何かについては触れませんのでご了承下さい。 cnpm - 中国ミラー版のnpm For developers in China, please visit the China mirror. 中国の開発者向けに作られているnpmのミラーサイト及びツールです。 https://github.com/cnpm/cnpm https://developer.al

    中華製npmを知ってますか?! cnpmを紹介(ネタ) - Qiita
  • TypeScript 4.5 以降で ESM 対応はどうなるのか?

    記事で記述した Node.js ESM 対応は2022 年 5 月に TypeScript 4.7 で正式版としてリリースされました。 記事の内容との差分はmodule:node12がmodule:node16に変更されたことぐらいです。node16では top-level await が使え、現時点ではnodenextとの差分はありません。 他に関連する機能としてresolution-modeや--moduleDetectionが追加されましたが、一般利用者が意識することはないでしょう。 先日リリースされた TypeScript 4.5 Beta で、待望の Node.js ESM 対応がアナウンスされました。 その後、ユーザーからのフィードバックを経て、TypeScript チームは TS 4.5(11/16 リリース予定)では ESM 対応を stable リリースせず、Nigh

    TypeScript 4.5 以降で ESM 対応はどうなるのか?
    mizdra
    mizdra 2021/10/25
    めっちゃよく纏まっている。しかしエコシステムの対応大変そうだ… 移行期ではユーザ側にもそれなりに混乱がありそう。歯を食いしばってやっていきたい。
  • Node.js v17 の主な変更点 - 別にしんどくないブログ

    2021/10/19にリリースされたNode.js v17の主な変更点を紹介します。 nodejs.org QUICがサポートされたOpenSSLにアップデート V8 が 9.5 にアップデート Intl.DisplayNames Intl.DateTimeFormat Promiseベースのreadline APIの追加 WHATWG Stream との互換性の強化 ディープクローンが簡単になる structuredClone の追加 Node.js v16からの機能 まとめ 参考資料 QUICがサポートされたOpenSSLにアップデート Node.jsのHTTPSなどのAPIで使われるOpenSSLのバージョンが1.1.0から3.0.0にアップデートされました。 OpenSSL-3.0.0はQUICをサポートしています。これによりNode.jsでもQUICをサポートできるようになります

    Node.js v17 の主な変更点 - 別にしんどくないブログ
  • ‘-‘ という名前の、中身が無いのに70万回ダウンロードされてる謎のnpmパッケージ

    – という名前の JavaScript/TypeScript パッケージについて警告を発している記事が話題となっています。 このパッケージ、中身はほとんど空で、Readme と、dev で TypeScript を動かせるようにするライブラリ群を呼ぶ箇所だけのもの。 しかし、この “-” を使っている他の npm パッケージが 50個以上あり、約一年前の公開時からのトータルのダウンロード数は72万回にもなります。 しかし、”-” を読み込んでいるパッケージを見てみても、”-” が必要そうには見えません。 警告記事では、この無名のパッケージが密かに使われるようになった原因が、npm コマンドのコマンドラインを打つときのミスタイプにあるのではないかとの仮説を立てています。 つまり、someFlag というオプションを使い npm i -someFlag somepackage と打つべきところ

    ‘-‘ という名前の、中身が無いのに70万回ダウンロードされてる謎のnpmパッケージ
  • GitHub Actions: Setup-node now supports dependency caching · GitHub Changelog

    AI & MLLearn about artificial intelligence and machine learning across the GitHub ecosystem and the wider industry. Generative AILearn how to build with generative AI. GitHub CopilotChange how you work with GitHub Copilot. LLMsEverything developers need to know about LLMs. Machine learningMachine learning tips, tricks, and best practices. How AI code generation worksExplore the capabilities and be

    GitHub Actions: Setup-node now supports dependency caching · GitHub Changelog
    mizdra
    mizdra 2021/07/03
    便利!
  • GitHub Actions: Yarn キャッシュをシンプルに使う | Marginalia

    今後は actions/setup-node の cache オプションで事足りるだろう。以下は読まなくていい。 GitHub Actions で継続的インテグレーション・デプロイを構成すると、すぐに問題になるのはキャッシュの活用だろう。 特に Node.js プロジェクトでは NPM から依存パッケージをダウンロードする時間がワークフロー実行時間全体の大部分を占めることも珍しくない。 毎回すべての依存パッケージをインターネット越しに取得することはなるべく避けたい。そこでキャッシュの出番になる。 GitHub Actions ではデフォルトで何もキャッシュされないため、基的には公式のactions/cacheを使うことになる。 actions/cacheはキャッシュするファイル・ディレクトリを指定し、それにキャッシュキーを紐付けるだけ、という単純なものだ。

    GitHub Actions: Yarn キャッシュをシンプルに使う | Marginalia
    mizdra
    mizdra 2021/06/12
    $YARN_CACHE_FOLDER 便利だ
  • yarn v2にまつわる誤解 | Wantedly Engineer Blog

    現在WantedlyではNode.jsのパッケージ管理にyarn v1を使っています。現在私は開発者体験の改善を目指してyarn v2への移行を検討しているのですが、その過程でyarn v2が誤解されがちだと感じるようになりました。そこで社内への情報提供も兼ねて、いくつか誤解されがちだと思われる点を紹介したいと思います。 (わかりやすさのためにyarn v2と呼んでいますが、 yarn v3以降も含みます。これらはメジャーバージョンアップではあるもののyarn v1→v2のようにアーキテクチャが刷新されるわけではないからです) ポイント1: yarnをv2にするのにPnPは必須ではないyarn PnPはyarn v2の目玉機能で、パッケージをnode_modules以下に展開せずに仮想化してロードできるようにするというものです。node_modulesの展開作業が不要になるほか、依存関係の

    yarn v2にまつわる誤解 | Wantedly Engineer Blog
    mizdra
    mizdra 2021/05/22
    known issue は洗い出されてるし、コミュニティでパッチを管理する仕組みがあるし、なにより Node.js/npm のイケてない部分が改善されていて、思っていたよりずっとイケてるじゃん…という感想になった。
  • corepack is 何?

    追記: 2023-11-19 corepack v0.20.0 にて、CLI のコマンド体系が一新されて多少わかりやすくなりました (PR#291)。新しいコマンドは README を参照。 追記: 2022-02-03 Node.js v14.19.0 に corepack が標準バンドルされました。 corepack がバンドルされていない Node.js v12 系は 2022-04-30 に EOL を迎えるので、あと 3 ヶ月もすればアクティブな Node.js 環境には必ず corepack が揃っているという状態になりますね。引き続き experimental ステータスのままではありますが。 追記: 2021-09-08 Node.js v16.9.0 で corepack が標準バンドルされました。まだ experimental 扱いですが。 デフォルトでは yarn も

    corepack is 何?
    mizdra
    mizdra 2021/05/02
    便利そう
  • Prisma – The Complete ORM for Node.js & TypeScript

    Prisma is a next-generation ORM for Node.js and TypeScript. After more than two years of development, we are excited to share that all Prisma tools are ready for production! Contents A new paradigm for object-relational mapping Ready for production in mission-critical apps Prisma fits any stack Open-source, and beyond How can we help? Get started with Prisma Come for the ORM, stay for the communit

    Prisma – The Complete ORM for Node.js & TypeScript
    mizdra
    mizdra 2021/04/30
    ついにproduction readyになった
  • ts-nodeで実行中かどうか確認する - 詩と創作・思索のひろば

    TypeScript でユーティリティ的なスクリプトを開発しているとき、毎回 tsc でコンパイルして node で実行するのはあまりに重たいのでやってられない。 ts-node というのでコンパイル作業なしに直接 .ts ファイルを実行できるんだけど、.ts ファイルとコンパイル後の .js ファイルの位置が異なっているので微妙に困ることがある。ファイルからの相対位置で何かを指定するような場合ですね。 なので ts-node 下での実行かどうかを判定したい。process.argv[0] らへんを見ると素の node との違いはわかるんだけど、質的な情報ではないのでちょっと気持ち悪いところがある。 と思って調べていたらちょうどそういう話があって、結局、以下のようにして調べられるらしい。process を拡張してるんですね。なるほど。 import { REGISTER_INSTANCE

    ts-nodeで実行中かどうか確認する - 詩と創作・思索のひろば
    mizdra
    mizdra 2021/04/26
    なるほど
  • GitHub Actions で yarn install を爆速にしたい

    - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v2 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- これは

    GitHub Actions で yarn install を爆速にしたい
    mizdra
    mizdra 2021/04/18
    GitHub Actions で node_modules をキャッシュする方法をいくつか紹介して、それぞれの速度を比較している、まとまっていてありがたい。