[フレーム]
1 - 40 件 / 43件
皆さんnpmパッケージのバージョンを上げるときにハマって依存地獄から抜けられなかったことはありませんか? 私はあります。 複雑怪奇な依存関係を調べてみようとnode_modulesを覗いてみて、そのカオスっぷりに臭いものに蓋をしたことはありませんか? 私はあります。 そこでnode_modules以下について調べてみたのですが、node_modulesにどんな問題点があって、npmやyarn, pnpmは何を目指していたのか時系列順に紐解いた方がわかりやすいことに気づきました。 ここでは初期のnpmが抱えていた問題から今に至るまでを順を追って説明します。 するとnode_modulesの仕組みの他に、各パッケージマネージャの方針の違いが見えてくるはずです。 初期の頃のnpm (~2015年以前) この頃はシンプルで、依存関係はそのままnode_modulesのディレクトリ構造に反映されてい
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 が生成される $
A global install cache. bun installを実行すると ~/.bun/install/cache/ 以下にnpmレジストリからダウンロードされたファイルの実体が展開されキャッシュされる(--cache-dirでパスを変更できる)。 キャッシュにはパッケージのバージョンごとのディレクトリとlatestのシンボリックリンクがある。これらのファイルを使ってbun install時に該当するバージョンのダウンロードを省く(--forceで再ダウンロードする)。 このため一度bun installしてlockfileが作成されると次はオフラインでinstallを実行しても成功する。 node_modules/を削除しても~/.bun/install/cache/からファイルを取ってくるのでネットワークアクセスをしない。
(Last Update: 2022年02月03日) npm と yarn(v1) と pnpm (とyarn v2)の違いについて記述します。 Versions npm Yarn pnpm 各パッケージの特徴 npm npmはnpm社が提供する、JavaScriptパッケージマネージャーです。 npmというコマンドラインで動作するプログラムでパッケージを管理できます。いわばnpm公式のパッケージマネージャーとなります。 Windows等でインストールするとNode.jsに同梱されています。 Yarn Yarnはnpmより後発のJavaScriptパッケージマネージャーです。 元々、npmにはインストール時のパッケージバージョンの非再現性やパフォーマンス上の問題、セキュリティの問題が山積しており、それを解決するために開発がスタートしました。 いわば、サードパーティのnpmということになります
$ pnpm install express Packages: +57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Packages are hard linked from the content-addressable store to the virtual store. Content-addressable store is at: ~/Library/pnpm/store/v3 Virtual store is at: node_modules/.pnpm Progress: resolved 61, reused 0, downloaded 57, added 57, done dependencies: + express 4.18.1 ディスク容量が節約された node_modules 「Packa
tl;dr node 14.19.0 で npm のバージョンを明示的に切り替える corepack が入った package.json の packageManager フィールドで npm 自体のバージョンや yarn の使用するバージョンを指定できる 詳しくは https://zenn.dev/teppeis/articles/2021-05-corepack 現状の npm-cli 自体が corepack に対応してないので、有効にしたければ npm コマンド自体を corepack に移す必要がある 現時点で packageManager を指定するだけだとまだ他の環境で有効にならないが、将来的に npm と node の corepack 対応が行き渡った時点で段階的に有効になる。 もっと詳しく # 手元の node を v14.19.0 以上に更新する # 自分は nvm
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
今年からフロントエンドエキスパートチームでは活動内容の一つである探求の一環として、メンバーが気になった技術に対して、気軽に触ってみる会をしています。次の画像は筆者が Slack で、気軽に触ってみる会の開催を宣言してる時のものです。 今回は去年の 12 月に Vercel に買収されたニュースがあった Turborepo を気軽に触ってみました。 個人的には 1 人で調べるときよりも複数人でわいわい調べた方が、その技術や関連する周辺知識の話を色んな人の観点で深掘ってできて、とても有意義な時間でした。 概要 Turborepo はモノレポのためのビルドシステムで次のような特徴があります。 Yarn, npm, pnpm の workspaces に対応してるリポジトリに対して簡単に導入できる workspace 内のコマンドの依存関係をシンプルに設定してくれる Turborepo で実行する
niという npm/yarn/pnpm/bun を同じコマンドでインストール/アンストールコマンドを実行できるツールがあります。 antfu/ni: 💡 Use the right package manager 仕組み的には、各パッケージのロックファイルやCorepackで決められたpackageManagerフィールドの値から、どのパッケージマネージャを使うかを判断しています。 たとえば、package-lock.jsonがあるプロジェクトなら npm を使ってるので、niコマンドは npm のコマンドを実行します。 また、packageManagerフィールドがyarn@<version>になっている場合は、niコマンドは yarn コマンドを実行します。 なぜこういうツールが必要になるかというと、npm や yarn などのパッケージマネージャは、それぞれのパッケージマネージャの
~ 秋のエンジニア大交流会 & LT会!!~( https://devguil.connpass.com/event/290596/ )で発表したセッションのスライドです。 サンプルリポジトリ: https://github.com/MH4GF/pnpm-workspace-knowhow-sample
3行まとめ pnpm の --filter オプションにはパッケージ名だけでなく git の commit や branch も渡すことができる pnpm ls --filter をうまく使えば「main branch からの diff の影響を受けるパッケージ」の一覧を取り出せる ドキュメントや help をちゃんと見ると、意外と知らないことが書いてある モチベーション LayerX のバクラク事業部では Webapp(Web Frontend アプリケーション)のモノレポ化を進めており、1つのリポジトリに複数の Next.js アプリケーションが存在します。 そこで悩ましいのが CI でのテストなどの実行です。 そのまま全件実行すると時間が長くなっていく e.g. アプリAのコードしか変更してないのに、アプリBのテストも実行されてしまうと時間もお金も無駄にかかる 何もしないとプロダクト
Catalogs を使うモチベーション Catalogs のメリットについては、ドキュメントではざっくり以下の3点が挙げられています。 単一バージョンを維持できることで、パッケージの重複によるバグの発生を防ぐ pnpm-workspace.yml を編集するだけで依存関係のアップグレードが完了する 依存関係アップグレード時に package.json を編集しなくてよくなり、git でのコンフリクトを避けられる 筆者の環境では特に1つ目の、「パッケージの重複によるバグを防ぐ」というのが大きなモチベーションとなりました。 モノレポと共通パッケージとパッケージ重複 筆者の環境では一部の Web Frontend もモノレポで運用しており、そのなかで一部の共通実装はモノレポ内パッケージとして切り出されています。以下は架空の例ですが、おおまかにこのような構造となっています。 たとえば各 webap
JSer.info #664 - Rollup 4.0.0がリリースされました。 Release v4.0.0 · rollup/rollup Node.js 14/16のサポート終了、Acornの代わりにSWCをパーサに使うように変更されています。 SWC利用に伴うオプションの削除や非推奨なオプションの削除などが含まれています。 Viteの現在と今後についてがViteConfで発表されています。 動画: https://viteconf.org/23/replay/vite_keynote スライド: State of Vite (ViteConf 2023) ViteはDevビルドにesbuild、ProdビルドにRollupを使うためビルド結果に差異が出やすいなどの問題があります。 そのため、Rollup互換を意識したRolldownというBundlerをRustで開発するという話。
pnpm のドキュメントには Working with Docker というページがあり、Monorepo の例も用意されています。 ただ、この例動かないんですよね。Dockerfile の解説をしつつ、動くように修正していきます。 手っ取り早く最終版を知りたい人は目次から最後まで飛んでください。 GitHub にもコードを置いています。 解説パート Example 2: Build multiple Docker images in a monorepo を見ていきます。 ※(注記) 前提として、app1, app2 は common に依存しているとします。 2 ~ 4 行目
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
newmoでは、フロントエンド、バックエンド、iOSやAndroidなどのモバイルアプリをすべて同じリポジトリで管理するmonorepoを採用しています。 monorepoを採用することで、アプリケーション間で共通のコードを共有することができたり、CIの管理が楽になったり、他のチームのコードを見るのにわざわざリポジトリをcloneする必要がなくなります。 また、monorepoを採用することで、アプリケーションが利用しているパッケージ(ライブラリやツール)のバージョンを1つだけにするOne Version Ruleが実装できます。 One Version Rule One Version Ruleは、monorepo内のパッケージのパッケージのバージョンを1つだけにするルールです。 The One Version Rule | Google Open Source One Versio
これはなに pnpm をベースにして実践的な monorepo プロジェクトを構築するまでの手順をまとめたものです。アプリケーション開発の実務では長らく yarn を常用してきましたが、極端に攻めたアプローチをしなければ pnpm でも十分に実務に耐えられると実感しました。筆者が実務で求める要件は大まかに以下のとおりです。 monorepo をサポートしている プロジェクトルートからサブパッケージの npm scripts を直接実行できる GitHub Action / CircleCI が動作する Renovate のサポート対象に含まれる 本稿では備忘録代わりとしてその内容をご紹介します。 pnpm とは yarn 同様、npm の代替として開発されているサードパーティーのパッケージマネージャーです。インストールの速さと(ディスクスペースの)効率性に主眼を置いています。 Next.j
まだパッケージマネージャーの打ち間違いで消耗してるの? 初手煽りタイトル失礼します。よだかと申します。 僕はフリーランスでいくつかプロジェクトをやらせてもらっているのですが、プロジェクトごとにパッケージマネージャーが違ったりします。 これがかなり辛く、yarnのプロジェクトでnpm installしてpackage-lock.jsonを生成してしまったり、npmのプロジェクトでyarn installしてyarn.lockを生成してしまったり。。 果ては、yarn devなのか、npm run devなのか、など気をつけないいけないことがかなり多いです。 そこで今回ご紹介したいのがniというツールです。 niについて niについて説明するために、READMEを見てみましょう。 まずは一行目です。 npm i in a yarn project, again? F**k! とても強い思いから
パッケージマネジャーとして pnpm の利用を強制させる(i.e. npm や yarn を叩けないようにする)方法はいくつか知られていますが、既存の方法では monorepo(pnpm workspace)で管理するパッケージ内での強制は簡単ではありませんでした。本稿では、解決策として、Mise を用いてディレクトリ単位でエイリアスを張り、npm や yarn を叩くと「pnpm を利用してね」とだけ表示させる仕組みを紹介します。 背景 近頃 npm パッケージのサプライチェーン攻撃が猛威を振るっており、対策の一つとして pnpm が注目されつつあります。pnpm が注目されている理由としては、公開から時間が経ったパッケージのみのインストールを強制できたり、依存パッケージの lifecycle scripts をデフォルトでは実行しないところにあるようです。 さて、npm パッケージのパ
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 3者の公式 概要 3者ともJavascriptのパッケージマネージャー。 npm はNode.jsをインストールすれば一緒にインストールされる。 yarn: npmと互換性があり、npmで使用していたプロジェクト設定ファイル(package.json)がそのまま使える。 pnpm: 同じくnpmと互換性があり、ディスクスペースの使用量と速度が大幅に改善されている。 先に npmとyarnとpnpmの違い2021 からわかりやすい結論。 筆者のおすすめ 初心者、もしくは複数人開発であればnpm をおすすめします。 標準ツールのため、Nod
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
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
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
この記事について みなさん、こんちにちは。 好きな絶滅動物はアルゲンタヴィス。uttk です。 先日、zenn-editor の Monorepo 構成を Lerna から pnpm + Turborepo + lerna-lite に変えたので、この記事でその構成について解説していこうと思います 💪 なんで、その構成? zenn-editor では Lerna を使って Monorepo 環境を構築していましたが、実際に Lerna を使っている部分はビルド時とリリース時のみで、ほとんどの機能を使用していませんでした。また、yarn workspace も併用していたため、違う Monorepo ツールが二つ存在していて、それぞれの役割が( 個人的に )分かりにくい状況でした。 そのため、Lerna を使わずに pnpm が提供している workspace 機能に寄せる形で構築した結果
Sometimes npm packages are compromised and published with malware. Luckily, there are companies like Socket, Snyk, and Aikido that detect these compromised packages early. The npm registry usually removes the affected versions within hours. However, there is always a window of time between when the malware is published and when it is detected, during which you could be exposed. Fortunately, there
pnpm link behavior updated: The pnpm link command now adds overrides to the root package.json. In a workspace: The override is added to the root of the workspace, linking the dependency to all projects in the workspace. Global linking: To link a package globally, run pnpm link from the package’s directory. Previously, you needed to use pnpm link -g. Related PR: #8653 Secure hashing with SHA256: Va
pnpm の新規ユーザーから、pnpm が生成する node_modules の奇妙な構造についてよく聞かれます。 なぜ平坦な構造を使用しないのでしょうか。 依存のさらにその依存はどこにあるのでしょうか。 この記事では、npm や Yarn の生成するフラットな node_modules に馴染みのある読者を想定しています。 npm が v3 からフラットな node_modules を採用する必要があった理由については、 なぜ pnpm が必要なのでしょうか (英語) を参照してください。 では、なぜ pnpm は通常とは異なる構造の node_modules を使用するのでしょう。 試しに 2 つのディレクトリを作成して、片方には npm add express を、もう一方には pnpm add express を実行してみてください。 npm の方のディレクトリにある node_m
Security News pnpm 9.5 Introduces Catalogs: Shareable Dependency Version Specifiers pnpm 9.5 introduces a Catalogs feature, enabling shareable dependency version specifiers, reducing merge conflicts and improving support for monorepos. pnpm is eight years into its unique approach to package management, and continues to gain traction, especially among those who need efficiency and support for monor
We are excited to announce the latest release of pnpm! To install it, check the installation page. Major Changes Node.js 14 Support Discontinued If you still require Node.js 14, don't worry. We ship pnpm bundled with Node.js. This means that regardless of which Node.js version you've installed, pnpm will operate using the necessary Node.js runtime. For this to work you need to install pnpm either
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
対象読者 pnpm を使ってみたい方、興味がある方、入門したい方。 npm、 yarn や lerna よりもワークスペース管理をもっと簡単にしたい方。 npm、 yarn のインストール速度が遅く感じる、もしくは容量を多く取られて困ると感じている方。 前提知識 npm もしくは yarn のパッケージマネージャとしての基本的な使い方 pnpm とは yarn や lerna のような npm の代替ツールです。 組み込みでワークスペース (モノリシックリポジトリ) へのサポートがあります。 よりシンプルな方法でのサポートをしており、やりたいことを実現する方法が非常に明快で、大きな特徴です。 (個人的) lerna などでは package.json に書かれた scripts を npm, yarn, lerna のどれから起動させればよいのかわかりにくいと感じていました。こういった悩み
概要 pnpm 9.6.0 からパッケージ内での npm-scripts の実行に利用する Node.js のバージョン指定が出来るようになっており、以下について調べたので紹介したいと思います。 package.json で指定可能なになった pnpm.executionEnv.nodeVersion について pnpm env を利用した pnpm 内で利用する Node.js の管理方法について pnpm.executionEnv.nodeVersion について 名前のとおり、実行環境における Node.js のバージョンを以下のように package.json で指定できます。
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
※(注記) こちらはミツモアAdvent Calendar 2021の6日目の記事です。 こんにちはミツモアで エンジニアの邢(@keidarcy)です。 ミツモアは「リモートワークが増えてエアコンを綺麗にしたい」「引っ越しで出た不用品を回収してもらいたい」といった生活のあらゆるシーンであなたにぴったりの専門家を無料で探せるサービスですので、ぜひ気軽に使ってみてください! meetsmore.com pnpmとは pnpm 公式サイトによると、pnpmはperformant npmを表しています。 pnpm Fast, disk space efficient package manager なので、pnpmはnpm/yarn同じような存在です。現在(2021年12月)、たくさんメジャーのオープンソースプロジェクト(vue、prisma...)は pnpmを使用しています。本文はnpm/yarnの
前置きこの記事を書こうと思った背景カミナシさんの「フロントエンドの Monorepo をやめてリポジトリ分割したワケ」に (Monorepo 構成で複数の React を共存させることができないため *1) の記載があり、いやいやそんなことないですよ?っていうのとMonorepoだとできないんだっていうふうに誤解してほしくないので、一応ネット上にできるよっていう記事を残しておきたかったので書こうと思いました。 この記事を書いてる時点でわかるとは思うのですが、結論としてはもちろんMonorepoでも異なるバージョンのReactは共存できます。 注釈先のReactのドキュメントの話は1つのビルド単位内で複数のバージョンが存在できないという話だと思うので、そのあたりの認識を間違えたんじゃないかなとも個人的には推察してます。 あとMonorepoをやめたところに関してはその組織の話で外部からとやか
yarnからpnpmへ移行する理由 yarnをv1からberryに移行した当初も pnpm の存在は認知していましたが、シンボリックリンクを使う関係で動かないパッケージがいくつかあったので、当時は berry を使う選択をしていました。 しかし、最近利用者が増えてきてシンボリックリンクに対応したパッケージが増えてきたのと、 Next.jsを開発しているVercelもpnpmを支援しているというのもあり、この度乗り換えることにしてみました。 pnpm のセットアップ インストール方法は色々ありますが、Node.jsのv16.9.0以降とv14.19.0以降には corepack が同梱されているため、管理のしやすさから corepack を使ってインストールします。 まず、package.json に以下の記述を追加します。
Codemod verifiedOfficial codemod published by a verified account. Learn more. Migrate to pnpm catalog Performs search across all packages in pnpm workspace. If there are more than 2 packages with same dependency - it will move dependency to catalog. If there are multiple versions of dependency - codemod will prompt to choose whether to move to catalog or not (in this case latest version will be pi
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes. The big news in Node package managers this week in pnpm’s version 10.0.0 release, which includes a number of breaking changes. One major update that rattled a few users is that pnpm is now blocking lifecycle scripts and will use an allow
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く