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