🤖

npm, npx, 何もなしで実行の違い(ビルド)

に公開

何もなしでts-nodeコマンド使う

何もなしでというのは

ts-node src/index.ts

のようにts-nodeから始めること。
これを使えるようにするには、ts-nodeコマンドがグローバルインストールされていないといけない。
ちなみにこれはあまり推奨されない。

npm, npxの違い

npm (Node Package Manager)

パッケージのインストールと管理を担当するツール
package.jsonに記載された依存関係をnode_modulesディレクトリにインストール
(スクリプトを実行するときはrunをつける必要がある)
主なコマンド:

  • npm install - パッケージのインストール
  • npm run - package.jsonのscriptsセクションに定義されたスクリプトを実行
  • npm update - パッケージの更新
  • npm uninstall - パッケージの削除
    npmを使ってts-nodeを実行する場合:
// package.json
{
// 他の記述
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "tsc",
    "start": "ts-node",
    "dev": "ts-node"
  },
// 他の記述
}
npm run dev src/index.ts

npx (Node Package Execute)

パッケージを実行するためのツール
主な特徴:
ローカルにインストールされていないパッケージも一時的にダウンロードして実行可能
グローバルインストールせずに、パッケージを直接実行できる
常に最新バージョンのパッケージを使用可能
npxを使ってts-nodeを実行する場合

npx ts-node src/index.ts

使い分けのポイント

npm
パッケージのインストールや管理
package.jsonに定義されたスクリプトの実行
プロジェクトの依存関係管理
npx
インストール済みパッケージの直接実行
一時的なパッケージの実行
最新バージョンのパッケージの実行
どちらの方法も有効だが、npxの方がより直接的な実行方法と言える。

yarnとの違いは?

主な違い

パフォーマンス
yarnは並列インストールを採用しており、一般的にnpmより高速
yarnは依存関係をキャッシュする仕組みが優れている
yarnはyarn.lockファイルで依存関係のバージョンを厳密に管理
セキュリティ
yarnはチェックサムを使用してインストールの整合性を検証
yarnはオフラインインストールが可能(yarn offline)
コマンドの違い

# パッケージのインストール
npm install
yarn install  # または単に yarn

# パッケージの追加
npm install package-name
yarn add package-name

# 開発依存関係の追加
npm install --save-dev package-name
yarn add --dev package-name

# スクリプトの実行
npm run script-name
yarn script-name

ワークスペース機能
yarnは複数のパッケージを管理するワークスペース機能が組み込み
npmはnpm workspacesとして後から追加された機能

npmからyarnへの移行

yarn.lockファイルを生成:

yarn

package.jsonの内容はそのまま使用可能(yarnとnpmは同じpackage.json形式を使用)
どちらを選ぶべきか
npmを選ぶ理由:
Node.jsに標準で付属
コミュニティが大きく、情報が豊富
シンプルで学習コストが低い
yarnを選ぶ理由
インストールが高速
セキュリティ機能が優れている
ワークスペース機能が組み込み
依存関係の管理が厳密

以下の場合はyarnを推奨
大規模なプロジェクト
モノレポ構成
インストール速度が重要な場合
厳格な依存関係管理が必要な場合

Discussion