20210720のNode.jsに関する記事は2件です。

Cloud9 - 既存のEC2インスタンスに接続する

まえがき 毎度のことながら環境構築に四苦八苦しております。 今回もうんうん唸りながら構築しました。 sshログイン時にNode.jsのインストール、ログインせずnodebrewでのインストール、 の両方とも経験した(ただ失敗しただけ)ので、どちらも投稿します。 結局新たにEC2インスタンスを作成し、SSH環境では使用していないので、 ゴンがカッツォを助けたみたいに、どなたかの助けになれば、、 Cloud9を使用する際は、AD Blockなどの拡張機能の停止または削除してから実行しましょう。 不具合が発生する模様です。 動作環境 ・MacBook Air (Retina, 13-inch, 2020) ・Big Sur11.4 ・ターミナルシェル:zsh 前提 VPCやEC2インスタンスの作成、 あるいはElastic IPアドレスの取得等は事前に済んでいることとします。 Cloud9のリージョンは東京にしました。 1.Node.jsをインストール Cloud9にはNode.jsが必要なので最初にインストールします。 (1)Amazon公式チュートリアルを参考にインストールしていきます ターミナルにて、 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash ※※ nvmのGitHubにて最新版のコードをコピペしてください ※※ (4)nvmを有効にします . ~/.nvm/nvm.sh (5)nvmを使用してNode.jsの安定版をインストールします nvm install --lts --latest -npm (6)安定版をデフォルトに設定します nvm alias default 'lts'/* (7)Cloud9で接続するディレクトリの権限を設定します ? Amazon公式:SSH環境ホスト要件 sudo chmod u=rwx,g=rx,o=rx ~ (8)gccが必要なので、 ? AWS Cloud9 で既存の EC2 インスタンスに接続する sudo yum -y gcc (10)つづけて、 curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash (11)Node.jsが正しくインストールされ、実行されているかテストします node -e "console.log('Running Node.js ' + process.version)" -> 「Running Node.js VERSION」 と表示されればNode.jsのインストール、設定は完了です。 ec2-user@ip-○○○ $ node -e "console.log('Running Node.js ' + process.version)" Running Node.js v14.17.3 2. 既存のインスタンスのセキュリティグループを変更する (1)AWSコンソールにログインします EC2 -> 左メニューのセキュリティグループ -> EC2に割り当てているセキュリティグループを選択 (2)インバウンドルールに下記を追加し保存します タイプ プロトコル ポート番号 ソース 説明 SSH TCP 22 18.179.48.128/27 Cloud9 SSH TCP 22 18.179.48.96/27 Cloud9 ※※ コピー用 ※※ 説明欄は省略可能です ※※ (3)正常に保存されました 3-1. Cloud9の環境構築 (1)Cloud9に戻り、入力していきます Name:任意のお名前 Description:既存のEC2インスタンスに接続 Descriptionは省略可能ですが、分かりやすいように記述しました。 -> Next Stepをクリック (2)既存のEC2インスタンスに接続するため、一番下にある、 ?Connect and run in remote server (SSH)を選択します User:ec2-user(インスタンスのユーザー名) Host:パブリックIPアドレスまたはDNSホスト名※ ※EC2インスタンスに記載されていますが、DNSホスト名が無効になっていると、 「 - 」と表示されているので有効にします。無効の方は3-2を参考になさってください。 (3)Copy key to clipbord をクリックして公開鍵をコピーします Advanced settingsは空欄のままでOKです。 (4)ターミナルに戻り、 sudo vim ./. ssh/authrized-keys/ に移動し、さきほどCopy key to clipbordでコピーした鍵を貼り付け保存します。 (5)Cloud9に戻り、Next StepをクリックするとReviewが表示されます 確認後にCreate environmentをクリックするとCloud9が作成されます わたしのようにsshログインせずインストールしてしまっていたら、 エラーメッセージが表示されます。 Could not execute node.js on あなたのIPアドレス #訳:ssh環境にNode.jsないで ログインしてないと気付いたときにはゾッとしました。。 3-2.DNSホスト名が「無効」の方へ:DNSホスト名を有効にする (1)VPCコンソール -> VPC -> 使用しているVPCを選択 (2)下タブのDNSホスト名:「無効」を見届ける (3)選択したVPC -> アクション -> DNSホスト名の編集 -> DNSホスト名 ☑︎有効化 にチェックして保存 (4)「有効」になりました (5)EC2コンソール -> EC2で再度確認すると、DNSホスト名が表示されているはずです こちらをCloud9のHOSTに貼り付けます。 *1. nodebrewを使ったNode.jsのインストール (1)homebrewでnodebrewをインストールしていきます brew install nodebrew (2)nodebrewがインストールされたか確認します % nodebrew v8.9.4 (3)Nodebrewをセットアップします nodebrew setup (4)PATHの設定を書き込みます export PATH=$HOME/.nodebrew/current/bin:$PATH が表示されているはずなので、vim ~/.zshrcに移動し、貼り付けてPATHを通します :wq #保存 source =/.zshrc #反映 (5)同作確認を行います nodebrew -help ヘルプがブワァ〜と表示されればnodebrewのインストールは完了です。 *2. Node.jpをインストール (1)Node.jsのインストール可能なバージョンを調べます nodebrew ls-all (2)今回は安定版(LTS)をインストールしました。2021/07/15時点で、v14.17.3でした nodebrew install -binary stable ※※ 最新版をインストールしたい方はこちら↓ nodebrew install latest ※※ エラーが出てしまった方はこちら -> ? MacにNode.jsをインストールする方法 (3)インストールしたNode.jsのバージョンを確認します % nobebrew ls v17.17.3 current:none (4)バージョンが表示されましたが、cuurent(現在)がnoneになっているので、 使用するバージョンを選択し、currentに表示されるか確認しましょう % nodebrew use v14.17.3 use v14.17.3 % nodebrew ls v14.17.3 current: v14.17.3 (5)何度でも確認したいので、ターミナルを終了したあと、 再度ターミナルを開き、下記コマンドでもう一度バージョンを表示して確認します node -v (6)1の(8)と同じく、Cloud9の接続するディレクトリ権限を設定します sudo chmod u=rwx,g=rx,o=rx ~ (7)gccが必要なので、①yumでgccをインストールし、 ②curlでインストーラーをダウンロードして実行します ※※ gcc:さまざまなプログラミング言語のコンパイラ集のこと。? IT用語辞典バイナリ ① sudo yum -y gcc ② curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash (8)本当にすごい量がブワァと表示されたのち、:Doneと表示されれば終了です! おつかれさまでした! ちなみになんですが、最後の | bash を省略してしまうと、 URL先に記述されているのコードがターミナル上に表示されるだけになります(経験者)。 あとがき SSH接続だと、セキュリティの設定やrvmのインストール等、自力でしなくてはなりません。 ノートに「マジでできたやっと 17:27:10」と書き残してあるのですが、 1日かかったやないか。。と学習が追いついていないことに愕然します。 未知の環境に複数手を出してはいけないと痛感しました。 phpとPython、サーバー系をとことんがんばります!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

package.jsonにfilesを書かないあなたは、誰かを少しだけ不幸にしています

先に結論だけ package.jsonにfilesフィールドを指定すると、node_modulesに保存されるファイルサイズが減ります。 はじめに この記事は、npmのpackage.jsonに指定するフィールド、filesの指定方法と効用を解説、共有するためのものです。 想定する読者 この記事は、以下の読者を想定して書かれています。 JavaScriptの開発経験がある npmを使ったことがある npmやGitHubでnpmモジュールを公開している 想定する環境 この記事は、以下の環境を想定して書かれています。記事を読む前に、お手元の環境をご確認ください。 $ npm --version 7.15.1 filesフィールドとは filesフィールドとは、package.jsonファイル内の設定フィールドです。このフィールドはnpmパッケージがインストールされたとき、どのファイルをnode_modulesにコピーするかを設定します。 たとえば、以下のようなnpmパッケージ用のリポジトリがあるとします。 example-project/ ├ src/ │ ├ srcA.js │ └ srcB.js ├ lib/ │ └ bundle.js ├ esm/ │ └ module.js ├ __test__/ │ ├ testA.spec.js │ └ testB.spec.js ├ package.json ├ LICENSE ├ jest.config.js └ README.md package.jsonには、以下のようにfilesフィールドが設定されています。 ▼package.json { "name": "example-project", "files": [ "lib", "esm" ], } このnpmパッケージをインストールします。 npm install --save-dev example-project すると、node_modulesには以下のようにファイルがインストールされます。 node_modules/ └ example-project/ ├ lib/ │ └ bundle.js ├ esm/ │ └ module.js ├ package.json ├ LICENSE └ README.md filesフィールドに指定されていないファイルは、node_modulesにはインストールされません。 filesフィールドの挙動 filesフィールドの挙動を、公式ドキュメントから読み解いていきます。 ファイルの指定方法は? filesフィールドにはstring配列を指定します。stringの中身は.gitignoreなどでおなじみのglobパターンを指定します。 省略するとどうなるか filesフィールドは省略可能です。省略した場合["*"]として解釈されます。このパターンはすべてのファイルにマッチします。 .npmignoreと併用するとどうなるか .npmignoreとfilesを併用した場合、ルートディレクトリとサブディレクトリで挙動が異なります。 ルートディレクトリの場合 : filesフィールドが優先されます。 サブディレクトリの場合 : .npmignoreが優先されます。 指定に関係なく無視されるファイルと、指定しても含まれるファイル filesフィールドの設定にかかわらず、必ずパッケージに含まれるファイルと無視されるファイルがあります。詳しいリストは公式ドキュメントを参照してください。 無視されるファイル .gitディレクトリやpackage-lock.jsonなど、インストール先に影響を与えないファイルは無視されます。 含まれるファイル package.jsonやLICENCEなど、インストール先に影響を与えたり尊重されるべきファイルはfilesフィールドの設定にかかわらずパッケージに含まれます。 filesフィールドの効用 filesフィールドを指定することで、インストール先のnode_modulesディレクトリのファイルサイズを減らせます。 たとえば以下のようなファイルはパッケージの動作に影響を与えません。filesフィールドを設定して除外するべきです。 単体テストファイル バンドル / トランスパイル前のソースファイル バンドル / トランスパイルのための設定ファイル(webpack.config.jsやtsconfig.json) APIドキュメント サンプルコード 以上、ありがとうございました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む