0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

npm run start実行した際、scriptsのprestartを先に実行させる

Posted at

背景

ローカルで色々と遊びたい。
ただ、AWS上の本番環境への影響は避けたい。
また、コマンドの入力も極力減らしたい。
そういう時に使えるTIPS。

復習もかねて、アウトプットしてみる。

前提

  • Node.js(v16.14.2)
  • VSCode
  • AWSアカウント

結論から先に

package.jsonのscriptsを以下のように設定し、
コマンドでnpm run startを実行すると、
実はstartが実行される前に、prestartが実行される。

package.json
"scripts": {
    "prestart": "setx AWS_PROFILE kenny_test",
    "start": "env-cmd -f .env npm run start-without-env",
    "start-without-env": "nodemon ./index.js",
  }

流れとしては、以下のようになる。

1.npm run startをコマンドで実行
2.scriptsの、prestartが実行される
  →AWSプロファイルのkenny_testがセットされる
3.scriptsの、startが実行される
4.scriptsの、start-witouht-envが実行される

実際にコマンド上で、npm run startを実行してみると、以下のように返ってくる。

PS C:********\src> npm run start

> hello_world@1.0.0 prestart 
> setx AWS_PROFILE kenny_test

成功: 指定した値は保存されました。

> hello_world@1.0.0 start
> env-cmd -f .env npm run start-without-env

> hello_world@1.0.0 start-without-env
> nodemon ./index.js

npm run startを実行すると、
上記のとおり、先にprestartが実行されている事がわかる。

【1】AWSプロファイル(参考URL

~/.awsのcredentialsには、以下のように設定する。
(①default, ②kenny_test)

credential.
[default]
aws_access_key_id        = hogehoge
aws_secret_access_key    = gehogeho
region                   = egohegoh

[kenny_test]
aws_access_key_id        = test
aws_secret_access_key    = example

例えば、
defaultは【本番環境へ接続するキー】が保存されており、
kenny_testは【開発環境へ接続するキー】が保存されているとする。

config.
[default]
region = ap-northeast-1
output = json
[kenny_test]
region = ap-northeast-1
output = json

【2】package.jsonのscripts

以下を参考にさせて頂いた。(参照元

特定のコマンド実行時にそのスクリプトが実行される前に実行させたいスクリプトがある場合は、
preを付与したスクリプト名で記述します。
例として実際にコマンド入力で実行するのがstartというスクリプト名だった場合、その前に実行させたいものはprestartというスクリプト名にします。

package.json
"scripts": {
    "prestart": "setx AWS_PROFILE kenny_test",
    "start": "env-cmd -f .env npm run start-without-env",
    "start-without-env": "nodemon ./index.js",
  }

prestartで、kenny_testを設定することで、
開発環境へ接続する為、ヒューマンエラーを防ぐ事ができる。

終わりに

本番環境への間違いを避けたい場合、
prestartを事前に設定することで、
影響を避けられる為、非常に有用な手だと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?