タグ ESM
新着順 10 users 50 users 100 users 500 users 1000 usersimport / exportの記法だけではない、CommonJS modulesとES modulesの違い
本記事はsyumai Advent Calendar 2024 4日目の記事です。 内容としては、主にWeb Developer Conference 2024の休憩中に@NozomuIkutaさんと行った雑談を記事化したものです。 内容に何か問題があれば、本記事のコメント欄や、Xなどでご連絡ください。 require(esm)の登場 2024年、ついにNode.jsのCommonJS modulesから、E... 続きを読む
process.getBuiltinModule(id) は TypeScript を ESM 化させるか?
こんにちは teppeis です。普段は開発本部長をやってますが、ブログフェスに駆り出されました! 本日は Node v22.3.0 に続いて v20.16.0 にもバックポートされた process.getBuiltinModule(id) について解説します。 問題: 同期的な条件付き require を ESM 化できない Node v22 にて、フラグ付きで CJS (CommonJS Modul... 続きを読む
Node.js の進化に伴い不要となったかもしれないパッケージたち
tl;dr はじめに 2024 年の 4 月 24 日に Node.js 22 がリリースされました。ESM を 条件付きで require する機能や、--run フラグによる npm スクリプトのパフォーマンス改善などが v22 で追加され、2009 年に Ryan Dahl が Node.js をリリースしてから 15 年が経つ今も、Node.js は進化を続けています[1]。 こうして No... 続きを読む
require(ESM)とECMAScript仕様
Meguro.es #27 @ oRo 続きを読む
100秒で理解するESM(ESModules)
ESMとは まず、ESMの定義から見てみましょう。 JavaScript Primer には、以下のように書かれていました。 ECMAScriptモジュールは、ES2015で導入されたJavaScriptファイルをモジュール化する言語標準の機能です。 jsprimer - [ES2015] ECMAScriptモジュール この定義を見て、「2015年から?」「それまではどうしてたの?... 続きを読む
Node.jsに入る新しいCJSからESMへの読み込み方法の紹介 - hiroppy's site
新しくCJSとESMの間での解決方法が変わる提案が出てきました。 まだマージされてませんが、すでに複数の承認があり、この方針から変わることはないように見えるので紹介したいと思います。 module: support require()ing synchronous ESM graphs by joyeecheung · Pull Request #51977 · nodejs/node Summary This patch... 続きを読む
2023-12-08のJS: Redux 5.0.0、Vitest 1.0.0、Astro 4.0
JSer.info #672 - Redux Toolkit v2.0.0に関連してRedux 5.0.0がリリースされました。 Release v5.0.0 · reduxjs/redux Redux 5.0.0では、TypeScriptへの書き換え、CJS/ESMのdual packageに変更、ES2020形式で出力するように変更。 また、createStoreを非推奨として、Redux Toolkitへの移行を推奨しています。 Release v... 続きを読む
2023-12-01のJS: Node.js v18.19.0(LTS)、BiomeとPrettier、CSS Hooks
JSer.info #671 - Node.js v18.19.0がリリースされました。 Node v18.19.0 (LTS) | Node.js npm 10へアップデート、node:moduleにregister APIの追加、import.meta.resolveのサポートが追加されています。 また、.jsのデフォルトの扱いをCJSからESMへと変更できる--experimental-default-typeフラグがバックポートされて... 続きを読む
2023-11-26のJS: Vite 5、Node.js 20.10.0(ESMのデフォルト化フラグ)、State of JS 受付中
JSer.info #670 - Vite 5.0がリリースされました。 Vite 5.0 is out! | Vite Node.js 14/16のサポート終了、Rollup 4へアップデート、CommonJS Node API(require("vite"))を非推奨化しています。 また、defineの置換方法をdevとproduction buildで同じ方法を使うように変更、devとpreviewでURL末尾のスラッシュの扱いが... 続きを読む
Deep Dive: Node.jsのESMデフォルト化への道
Node.js 21では --experimental-default-type=module フラグで、JavaScriptファイルのデフォルトの解釈をCJS(CommonJS)からESM(ECMAScript Modules)に変更できるようになっています。 Node.js 21 is now available! | Node.js これは、Node.jsにおいてJavaScriptファイル(.js)のデフォルトをESMに変更するための第一歩で... 続きを読む
社内で使う npm パッケージの作成に Deno を採用した話 - Cybozu Inside Out | サイボウズエンジニアのブログ
こんにちわ。フロントエンドエキスパートチームの@nus3_です。 最近、社内用の npm パッケージを作る必要があり、そのパッケージは依存が少なく、実装もシンプルだったので、npm パッケージの作成には Deno と dnt を採用しました。 dnt とは dnt は Deno で実装したモジュールを CJS、ESM に対応した npm パッケージに... 続きを読む
2023-08-16のJS: Next.js v13.4.16(test mode)、SafariのStorage Policy、ESMへの移行(Redux)
JSer.info #656 - Next.js v13.4.16がリリースされています。 Release v13.4.16 · vercel/next.js v13.4.16には、実験的な機能としてtest modeというPlaywrightとMSWを使ったテストする仕組みが追加されています。 Next.jsのApp Directoryでは、MSWがNext.jsの処理に差し込めるポイントがなかったため、MSWが動かないな... 続きを読む
Deno + dntでCJS・ESMに対応したnpmパッケージを作ろう
3 行まとめ CJS、ESM に対応した npm パッケージが Deno + dntで簡単に作成できる Deno で開発できるので、Lint、Format、Test、TypeCheck が設定なしですぐに使える dntで作成した CJS、ESM のファイルに対して、それぞれ Node.js でもテストを実行してくれる Deno のモジュールを npm パッケージに変換するdnt Deno の... 続きを読む
TypeScriptのmoduleオプションの話、あるいはTypeScript開発者の苦悩、あるいはCJSとESMの話
皆さんこんにちは。早速ですが、TypeScriptのmoduleオプションはご存じでしょうか。moduleオプションは、例えば次のような値をサポートしています。 commonjs umd es2015 esnext node16 nodenext 皆さんは、moduleオプションが何を設定するオプションなのか一言で説明できますか? 実は、TypeScriptの熟練者であってもmo... 続きを読む
CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか
Secretlint v7でCommonJS からES Modulesへの移行を行いました。 Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し この記事では、CommonJS(CJS)からES Modules(ESM)への移行を行った経緯と、移行する方法について紹介します。 CJSからESMへの移行は、率直に言えば単調な作業で、メリットが見えにくい作業で... 続きを読む
eslint-cjs-to-esm: CJSをESMへとマイグレーションするツールを書いた
最近、色々なライブラリをCommonJS(CJS)からECMAScript Module(ESM)へとマイグレーションしています。 その際に、ESMでは__dirnameやrequireなどCommonJS特有の機能は使えなくなっています。 また、TypeScriptやBabelなど多くのツールはCJSではimport時に拡張子はなくても大丈夫ですが、ESMの場合はimport時に拡張子が必... 続きを読む
🌕 moonでのmonorepo管理とpackemonでのCJS/ESMのdual package
🌕 moonでのmonorepo管理とpackemonでのCJS/ESMのdual package 🌕 moon 一貫性を持ったmonorepo管理ツール for JavaScript ハッシュを使ったファイルキャッシュ プロジェクトのパッケージ間の依存関係の分析とタスク実行 Node.js/npmパッケージマネージャーのバージョン管理と一貫性 TypeScriptのProject Referendcesの... 続きを読む
Vite 3 が採用した CJS Proxy による Dual Package 構成
2022 年現在、Node.js 界隈は ESM (ES Module) への移行の過渡期であり、特に既存プロジェクトにおいては CJS (CommonJS) 構成であることがまだまだ多い。また、Pure ESM な npm パッケージは、CSJ プロジェクトからの利便性が悪く、dynamic import が必須で非同期化を強いられたり TypeScript の設定変更が必要だったり... 続きを読む
Rust でもできる!RISC-Vシミュレータの作りかた 〜 From Ruby To Rust 〜 - esm アジャイル事業部 開発者ブログ
最近 ESM と RISC-V のロゴの配色が似ていると感じている @wat-aro です。 はたけやまさん の blog.agile.esm.co.jp はおもしろい記事でしたね。 この記事は最後こう締めくくられています。 以上、Rubyを使ったシンプルなRISC-Vシミュレータの作り方のご紹介しました。 皆さんも梅雨の時期のおうち時間にお好きなプログ... 続きを読む
Rubyでできる!RISC-Vシミュレータの作りかた 〜 From 4649 To HELLO WORLD 〜 - esm アジャイル事業部 開発者ブログ
HELLO WORLD〜 はじめに こんにちは、永和システムマネジメントの自作CPUおじさん、はたけやまたかし( @htkymtks )です。 今回はRubyを使った小さなRISC-Vシミュレータの作り方をご紹介します(以前もシミュレータの記事を書いたのですが、シミュレータに大幅に手を入れたので、それに対応したHDリマスター版です) リポ... 続きを読む
TypeScript 4.7 と Native Node.js ESM
TypeScript 4.7 がリリースされたので、Node.js ESM 対応の現状をまとめておく。 @teppeis さんの TypeScript 4.5 以降で ESM 対応はどうなるのか? を先に読んでおくと、以降の話も読み進めやすいかも。 このエントリの中でも、teppeis さんの定義した用語をそのまま用いさせてもらう。 * CommonJS (CJS): 従来式の Nod... 続きを読む
リモートワークスタイルチェックをやってみた (永和システムマネジメント アジャイル事業部の場合) - esm アジャイル事業部 開発者ブログ
エンジニアリングマネージャーの @koic です。富山Ruby会議01の主催者でもあった @mugi_uno さんがまとめられたリモートワークスタイルチェックを行ってみました。 ここ最近やった何件かのカジュアル面談を通して、"リモートワーク" のスタイルの認識に企業・個人によって大きく差がある印象を受けたので、ミスマッチを... 続きを読む
2021-10-27のJS: Yarn 3.1、Node.js 16.13.0(LTS)、Next.js 12
JSer.info #563 - Yarn 3.1がリリースされました。 Yarn 3.1 🎃👻 Corepack, ESM, pnpm, Optional Packages ... - DEV Community 👩💻👨💻 berry/CHANGELOG.md at master · yarnpkg/berry yarn init -2でNode v16.9.0からサポートされたCorepackのpackageManagerフィールドに対応しています。 また、PnPでのEMSサポート、新... 続きを読む
TypeScript 4.5 以降で ESM 対応はどうなるのか?
先日リリースされた TypeScript 4.5 Beta で、待望の Node.js ESM 対応がアナウンスされました。 その後、ユーザーからのフィードバックを経て、TypeScript チームは TS 4.5(11/16 リリース予定)では ESM 対応を stable リリースせず、Nightly のまま継続検討することを決定しました[1]。 今後どうなるかは分かりませ... 続きを読む
ts-jestとESM - lacolaco notes
#Jest v27 / ts-jest v27 https://jestjs.io/ja/docs/next/ecmascript-modules Node.js の --experimental-vm-modules オプションが必要 ESMとして扱いたいファイルの拡張子を extensionsToTreatAsEsm で宣言する必要あり JestがESMをサポートしている状態では内部的に supportsStaticESM フラグがtrueになる このフラグ... 続きを読む