🤠

ルートのpackage.jsonから、yarnで作業ディレクトリを指定してscriptを実行する方法

2021/08/18に公開

例えばbackendとfrontendという2つのディレクトリが存在するディレクトリ内で、ディレクトリを移動することなくscriptsを実行するには・・・について調べたメモです。

Project Directory
   backend
   frontend
   packages.json <== ここからフロントエンドとバックエンドのscriptsを実行したい...

npm --prefix

👇はフロントエンド側でReactのnpm startを実行する想定

npm start --prefix frontend

frontendの部分を指定のディレクトリ名に書き換える。

npm Docsより

Yarn --cwd

👇はフロントエンド側でReactのyarn startを実行する想定

yarn --cwd frontend start

frontendの部分を指定のディレクトリ名に書き換える。
npm start --prefixと順番が異なる点が要注意!

Yarnより


(番外)複数のscriptsを同時に実行する

💡concurrentlyを使用する

yarn add -D concurrently

concurrentが意味する通り、同時に複数のscriptを実行します。

packages.json
  "scripts": {
    "start": "node backend/server",
    "server": "nodemon backend/server",
    "client": "yarn --cwd frontend start",
    "dev": "concurrently \"yarn server\" \"yarn client\""
  },

さらに番外TypeScript編
tsconfig.json内でoutDirdistに指定しておく

packages.json
  "scripts": {
    "build": "yarn tsc",
    "start": "node dist/index.js",
    "dev": "concurrently \"yarn tsc --watch\" \"yarn nodemon -q dist/index.js\""
  }

Discussion