- 投稿日:2020-03-16T23:15:13+09:00
Lambdaプロキシ統合でmultipartのフォームデータをパースする
ファイル添付とかmultipartで送信されてくることがあるので、そのパース方法。
busboyというライブラリを次のように使うことで実現可能。
event
はlambda関数の入力。if (event.headers['content-type'] && (event.headers['content-type'] as string).includes('multipart/form-data')) { console.log('IT IS MULTIPART'); const input: CreateMeProfileInput = {}; const busboy = new Busboy({ headers: event.headers, defCharset: 'utf8' }); return new Promise((resolve, reject) => { busboy.on('file', (fieldname: any, file: any, filename: any, encoding: any, mimetype: any) => { console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype); file.on('data', function (data: any) { util.inspect(data); console.log(typeof data); console.log('File [' + fieldname + '] got ' + data.length + ' bytes'); }); file.on('end', function () { console.log('File [' + fieldname + '] Finished'); }); }); busboy.on('field', function (fieldname: string, value: any, fieldnameTruncated: any, valTruncated: any, encoding: any, mimetype: any) { console.log(util.inspect(value)); console.log(value.toString('utf8')); console.log('Field [' + fieldname + ']: value: ' + util.inspect(value) + ` encoding:${encoding}, valTruncated:${valTruncated}, mimetype:${mimetype}`); }); busboy.on('finish', () => { console.log('Done parsing form!'); console.log(input); resolve(input); }); // @ts-ignore busboy.on('error', (err) => { console.log('busboy parse error'); console.log(input); reject(err); }); busboy.write(event.body); // 第二引数いらない busboy.end(); }); }
- 投稿日:2020-03-16T20:31:02+09:00
Browser/Node.js両対応、シンプルなHTTPクライアント"bent"
Node.jsでHTTPリクエストしたいなーと思って一番メジャーそうな request - npm を覗いたら deprecated になってるじゃないですか!
代わりに、シンプルなHTTPクライアントで良いの無いかなーと調べてたら、
request
のissuesコメントにあったbent
というクライアントに辿り着きました。bent
使い方はとても簡単。
localhost:3000
へGET
してレスポンスボディを文字列で受けたい場合...const bent = require("bent"); const httpGet = bent("http://localhost:3000", "GET", "string"); const responseBody = httpGet("/");これだけ。
Node.jsでは
http
を、Browserではfetch
というように内部で使い分けてるので、コードを統一しつつNode.jsで実行時にはCORS問題が発生しません。
- 投稿日:2020-03-16T17:50:03+09:00
Nodeインストール時に困った件
エラー内容
v12.16.1 is not found Can not fetch: https://nodejs.org/dist/v12.16.1/node-v12.16.1-darwin-x64.tar.gznodebrewの安定版をインストールしようとした際に
上記のようなエラーが出た。解決策
どうやら別の方法で再インストール。
curl -L git.io/nodebrew | perl - setupexport PATH=$HOME/.nodebrew/current/bin:$PATH出てきたPATHをbash.profileに追加。
open ~/.bash_profile保存して閉じ、再読み込みを行う。
source ~/.bash_profile参考にしました:
Can not fetch: とか 言われて nodebrew で node のインストールが失敗する以上、ありがとうございました。
- 投稿日:2020-03-16T17:50:03+09:00
Nodeインストール時に遭遇したエラーとその解決策
エラー内容
v12.16.1 is not found Can not fetch: https://nodejs.org/dist/v12.16.1/node-v12.16.1-darwin-x64.tar.gznodeの安定版をインストールしようとした際に
上記のようなエラーが出た。解決策
どうやら別の方法で再インストール。
curl -L git.io/nodebrew | perl - setupexport PATH=$HOME/.nodebrew/current/bin:$PATH出てきたPATHをbash.profileに追加。
open ~/.bash_profile保存して閉じ、再読み込みを行う。
source ~/.bash_profile参考にしました:
Can not fetch: とか 言われて nodebrew で node のインストールが失敗する以上、ありがとうございました。
- 投稿日:2020-03-16T15:24:24+09:00
@kintone/rest-api-client をGitHubからインストールする
はじめに
@kintone/rest-api-client
の開発中の機能を、GitHubからインストールして早めに使ってみました。
一般的にNPMパッケージをGitHubからインストールするときに比べて、特殊な方法が必要だったのでメモ。注意
- Webpackビルド環境がある前提です
- 開発中のを勝手に使う場合、深刻なバグがある可能性もあるので自己責任で!
ディレクトリ構造
rest-api-clientは、Gitリポジトリとしては特殊な形をしています。
https://github.com/kintone/js-sdk
この@kintone/js-sdk
というリポジトリ内に、サブディレクトリとしてrest-api-client
が存在します。
https://github.com/kintone/js-sdk/tree/master/packages/rest-api-clientNPMの世界では
@kintone/rest-api-client
という単独パッケージ扱いですが、Gitの世界では単なるサブディレクトリ。
(なんでこんな変な構成なのかは謎。こういうNPMデザインパターンもあるのか?誰か知ってたら教えてください)なので、GitHubからこんな風にインストールしようとしてもエラーになります。
yarn add https://github.com/kintone/js-sdk/tree/master/packages/rest-api-client方法その1(Gitのsubmoduleとして使用)
NPMではなく、Gitのsubmoduleとしてインストールします。
mkdir vendor cd vendor git submodule add https://github.com/kintone/js-sdk自分でビルド
cd js-sdk/packages/rest-api-client/ yarn install yarn buildこんな風にlibフォルダが出来ていたらビルド成功。
$ ls lib KintoneAllRecordsError.d.ts KintoneRestAPIClient.js __tests__/ url.d.ts KintoneAllRecordsError.js KintoneRestAPIError.d.ts client/ url.js KintoneRequestConfigBuilder.d.ts KintoneRestAPIError.js http/ KintoneRequestConfigBuilder.js KintoneTypes.d.ts index.d.ts KintoneRestAPIClient.d.ts KintoneTypes.js index.js使うときは、こんな風に相対パスで
js-sdk/packages/rest-api-client
をimport
します。import { KintoneRestAPIClient } from '../vendor/js-sdk/packages/rest-api-client'これで、2020/3/16時点で未リリースの
addAllRecords
関数だって使えちゃいます![]()
方法その2(NPMモジュールとしてGitHubからインストール)
最初こっちのやり方考えてたんですが、方法1の方がいいと思ってやめました。
まず、Gitリポジトリ単位で
js-sdk
ごとインストールしてしまう。yarn add https://github.com/kintone/js-sdkそのままでは使えないので、該当ディレクトリに移動して自分でビルド
cd node_modules/@kintone/js-sdk/packages/rest-api-client/ yarn install yarn build
使うときは、こんな風に
@kintone/js-sdk
配下のディレクトリをたどってimport
します。import { KintoneRestAPIClient } from '@kintone/js-sdk/packages/rest-api-client/lib'
rest-api-client
まで指定でOKかと思ったら、
rest-api-client/lib
まで指定しないとうまく動いてくれませんでした。問題点
ビルド直後はうまく動くんですが、そのあと他のNPMモジュールを追加インストールしたら、せっかくビルドした
rest-api-client/lib
がきれいさっぱり無くなっちゃいました。インストール毎にクリーンにしてくれるんですね。。たとえば
.gitignore
で該当フォルダを除外しないようにして、lib
をコミットしたりすればいけますが、node_modules
の中の一部を除外するのがかなり大変だったりするので、やめといた方がよさそう・・・一応やり方書いておきますが、こんなギャグみたいな
.gitignore
書いて、.gitignorenode_modules/* !/node_modules/@kintone /node_modules/@kintone/* !/node_modules/@kintone/js-sdk/ /node_modules/@kintone/js-sdk/* !/node_modules/@kintone/js-sdk/packages/ /node_modules/@kintone/js-sdk/packages/* !/node_modules/@kintone/js-sdk/packages/rest-api-client/ /node_modules/@kintone/js-sdk/packages/rest-api-client/* !/node_modules/@kintone/js-sdk/packages/rest-api-client/.gitignore !/node_modules/@kintone/js-sdk/packages/rest-api-client/lib/さらに、こっちの
.gitignore
からlib
を消しておく。node_modules/@kintone/js-sdk/packages/rest-api-client/.gitignorenode_modules/ -lib/ esm/ umd/
まぁ、方法1の方が無難ですなw
おわりに
くれぐれも自己責任でね!
僕も正式リリースまでは、プロダクトコードには使いませんから!
- 投稿日:2020-03-16T14:04:48+09:00
フロント・バックエンドサービスをコンテナ化してもGitコミット時にLefthookでテストやLint実行
TL;DR
- フロント・バックエンドサービスをそれぞれコンテナ化、docker-composeで全てのコンテナを管理する
- monorepoで管理した際に1リポジトリとなるので気軽にGit Hookの処理ができない
- Lefthookを導入してpre-commit時にすべてのコンテナに対してLintツールを動作させるようにした
サンプルコード
https://github.com/MegaBlackLabel/lefthook-docker-node-go-dev-sample
1リポジトリで開発環境を管理したい
渋川さんの記事
マイクロサービスほどじゃないけどウェブサービスを分割開発したい人向けDocker設定を集めるスレ
https://qiita.com/shibukawa/items/fd49f98736045789ffc3を読んでフロントエンドとAPIがごっちゃになっている開発環境ヨクナイ!ってことでサービス単位でコンテナ化してvs codeのリモートコンテナ機能を使って開発環境を再構築をしていたらGitとGItHooksの扱いで躓く。
Git Hooksの扱い
1リポジトリでサービスをコンテナ化してmonorepoを構築した際に.gitはルートディレクトリのみに存在する。
何が起こるかというと、フロントエンド開発時に「Husky+lint-stagedでコミット前にeslintやprettierを実行してコミット前にソースをチェックする」ができなくなります。これは治安が悪くなるってことで調査を進めた結果、試してみたのがLefthookです。Lefthookを使ってみる
Lefthookとは?ということで公式の説明を引用
The fastest polyglot Git hooks manager out there
Fast and powerful Git hooks manager for Node.js, Ruby or any other type of projects.
- Fast. It is written in Go. Can run commands in parallel.
- Powerful. With a few lines in the config you can check only the changed files on pre-push hook.
- Simple. It is single dependency-free binary which can work in any environment.
- GO製。コマンドを並列実行できる
- かんたんな設定ファイルでpre-pushのhookが使えるようになる
- (GOによる)シングルバイナリなので、どのOSでも実行可能
今回は以下のことを実装しました。
- 起動時にdocker-composeでインスタンス起動
- 起動したインスタンスに対してコマンドを実施
- 更新対象のファイルの拡張子をgrepして対象の拡張子がstageにあるときのみ実行する
※、余談ですが日本語での紹介記事は2つのみ。1つは公式の翻訳ともう一つはRubyでのHusky置き換え記事です。
Lefthook: 多機能GItフックマネージャ
https://techracho.bpsinc.jp/hachi8833/2019_10_16/79052Git HooksマネージャーのLefthookを試してHusky(+lint-staged)と比較した結果、乗りかえました
https://blog.solunita.net/posts/change-lefthook-instead-of-lintstaged-with-husky/Lefthookインストール
Lefthookインストールですが、公式サイトのInstallationか、リリースページから直接ダウンロードします。自分はWindows環境なのでプロジェクト内にlefthook.exeをそのまま置いて使っています。
インストール後に対象のリポジトリで以下のコマンドを実行lefthook install #Windowsで直下に置いている場合は lefthook.exe installインストールが完了するとリポジトリのルートに「lefthook.yml」が作成されますので、こちらに設定を書きます。
Lefthook設定ファイル解説
lefthook.yml# EXAMPLE USAGE # Refer for explanation to following link: # https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md # # pre-push: # commands: # packages-audit: # tags: frontend security # run: yarn audit # gems-audit: # tags: backend security # run: bundle audit # # pre-commit: # parallel: true # commands: # eslint: # glob: "*.{js,ts}" # run: yarn eslint {staged_files} # rubocop: # tags: backend style # glob: "*.rb" # exclude: "application.rb|routes.rb" # run: bundle exec rubocop --force-exclusion {all_files} # govet: # tags: backend style # files: git ls-files -m # glob: "*.go" # run: go vet {files} # scripts: # "hello.js": # runner: node # "any.go": # runner: go run pre-commit: piped: true commands: 1_docker-compose: root: . run: docker-compose up -d 2_eslint: root: "containers/frontend/" glob: "*.{js,jsx,ts}" run: docker exec -it frontend-container yarn eslint-check 3_frontend-test: root: "containers/frontend/" glob: "*.{js,jsx,ts}" run: docker exec -it frontend-container yarn test 4_api-test: root: "containers/api/" run: docker exec -it api-container go testサンプルとインデントの数が違うのはご愛嬌。今回使っている処理は以下の通り。
- pre-commit: コミット実施前に実行してほしい処理
- piped:commandsを名前順に実施する。そのため頭文字に数字をつける
- commands:実行するコマンド
- root:どの階層でコマンドを実施するかを記載
- glob:stagedのファイルのうち、コマンド実行対象とするファイルを選別する
- run:実行するコマンド
コマンドの内容ですが以下の処理を実施しています。
- docker-composeでコンテナを起動
- docker execを使用してフロントエンドコンテナでeslint+Prettierを実施
- docker execを使用してフロントエンドコンテナでテストを実施
- docker execを使用してAPIコンテナでテストを実施
フォルダ・ファイル構成
以下の想定でファイル構成を行っています。
- フロントエンドとAPIサーバをそれぞれコンテナ化して管理
- docker-composeでコンテナを一元管理
- フロントエンドではeslint+Prettierでのソース整形とテストを実施
- APIサーバではテストを実施
- それぞれ正常に実行時のみコミットを実施するファイル構成lefthook-docker-node-go-dev-sample │ .gitignore │ docker-compose.yml │ lefthook.exe │ lefthook.yml │ LICENSE │ README.md │ └─containers ├─api │ docker-entrypoint.sh │ Dockerfile │ go.mod │ go.sum │ main.go │ main_test.go │ └─frontend │ .eslintrc.json │ docker-entrypoint.sh │ Dockerfile │ package.json │ README.md │ yarn.lock │ ├─node_modules ├─public │ favicon.ico │ index.html │ logo192.png │ logo512.png │ manifest.json │ robots.txt │ └─src App.css App.js App.test.js index.css index.js logo.svg serviceWorker.js setupTests.jsLefthookでpre-commit時にコンテナに対してコマンド実行
pre-commitをrunしてみる。
実行結果.\lefthook.exe run pre-commit RUNNING HOOKS GROUP: pre-commit EXECUTE > 1_docker-compose api-container is up-to-date frontend-container is up-to-date EXECUTE > 2_eslint yarn run v1.22.4 $ eslint --print-config .eslintrc.json | eslint-config-prettier-check No rules that are unnecessary or conflict with Prettier were found. Done in 0.69s. EXECUTE > 3_frontend-test yarn run v1.22.4 $ CI=true react-scripts test PASS src/App.test.js ✓ renders learn react link (39ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 2.081s Ran all test suites. Done in 3.23s. EXECUTE > 4_api-test [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /ping --> github.com/MegaBlackLabel/lefthook-docker-node-go-dev-sample.setupRouter.func1 (3 handlers) [GIN] 2020/03/15 - 03:43:28 | 200 | 44.742µs | | GET /ping PASS ok github.com/MegaBlackLabel/lefthook-docker-node-go-dev-sample 0.014s SUMMARY: (done in 7.78 seconds) ✔️ 1_docker-compose ✔️ 2_eslint ✔️ 3_frontend-test ✔️ 4_api-testコマンドが順番に実行されそれぞれの実行結果が表示。最後にサマリーとしてOK・NGが出力されます。
まとめ
- サービス単位でコンテナ化して開発するのは便利だね。でもGit Hooksの処理ができない
- Lefthook使えばできるよ。シングルバイナリだから導入もかんたんだよ
- コンテナ化してもGit Hooksが使えるので複数の開発者がいても治安が維持できそう
以上
- 投稿日:2020-03-16T11:51:55+09:00
管理者権限のないWindowsでvue開発(サンプル付き)
コロナ禍で、在宅で、与えられたリモート環境には管理者権限がなくて、でも開発はやらないと。。
なんて状態でもvue開発するための環境構築手順ですついでに vue の動作確認サンプルも載せときます
手順
1.node環境の構築
2.vue-cli のインストール
3.vue プロジェクトの作成
4.vue 動作確認用サンプル1.node環境の構築
公式サイトから ZIP版をダウンロードしてきて、展開
環境変数を設定します
ファイルを展開して置くだけなので管理者権限は不要です1.1. nodeをダウンロード
https://nodejs.org/ja/download/
Windows Binary の ZIPファイルをダウンロードです1.2. nodeをインストールするフォルダの準備
ユーザ(自分)のフォルダにインストール用フォルダを準備
コマンドプロンプトを開いてフォルダを作成しときます
c:\Users\ユーザ名> mkdir App1.3. nodeをインストール(ファイル置くだけ)
まず落としてきたZIPを展開
node-v12.16.1-win-x64.zip
※ Windows標準の「すべて展開」を使った前提で記述してます展開してできたフォルダを準備したAppフォルダに移動
C:\Users\ユーザ名 > move Downloads\node-v12.16.1-win-x64\node-v12.16.1-win-x64 App\ 1 個のディレクトリを移動しました。移動したフォルダ名を今後のためにリネームしときます
「node-v12.16.1-win-x64」->「node」C:\Users\ユーザ名> cd App C:\Users\ユーザ名\App> rename node-v12.16.1-win-x64 node1.4. PATHの設定
管理者権限がないのでコントロールパネルから環境変数PATHを設定します
1.4.1. コントロールパネル -> ユーザー アカウント を開き
1.4.2. ユーザー アカウント を開き
1.4.3. 環境変数の変更 を開く
1.4.4. 環境変数 PATH に nodeを追加する
開いた「環境変数」ウィンドウで上部のユーザの環境変数から Path を選択
(下部のシステム環境変数は権限がなくて変更できないと思います)
「編集」ボタンを押して、開いた「環境変数名の編集」ウィンドウで「新規」でnodeをインストールしたフォルダを追加します
[ C:\Users\ユーザ名\App\node ]1.5. nodeのインストール確認
新たにコマンドプロンプトを開いてバージョンを確認してみます
C:\Users\ユーザ名> node --version v12.16.1 C:\Users\ユーザ名> npm --version 6.13.4どうでしょう
ちゃんとバージョン出たら、インストール成功です
※ 上記バージョンは 2020/3/16 時点の最新だと思います2.vue-cli のインストール
npm でサクッとインストール
コマンドプロンプトで以下を実行
C:\Users\ユーザ名> npm install @vue/cli ・・・・ + @vue/cli@4.2.3 added 1115 packages from 654 contributors and audited 16661 packages in 590.218s 23 packages are looking for funding run `npm fund` for details4.2.3 がインストールされました
3.vue プロジェクトの作成
コマンドプロンプトで以下を実行
> vue create test ・・・ $ cd test $ npm run serve無事にインストールされた模様
インストールパッケージを確認
> cd test test> type package.json { "name": "test", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "core-js": "^3.6.4", "vue": "^2.6.11" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.2.0", "@vue/cli-plugin-eslint": "~4.2.0", "@vue/cli-service": "~4.2.0", "babel-eslint": "^10.0.3", "eslint": "^6.7.2", "eslint-plugin-vue": "^6.1.2", "vue-template-compiler": "^2.6.11" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/essential", "eslint:recommended" ], "parserOptions": { "parser": "babel-eslint" }, "rules": {} }, "browserslist": [ "> 1%", "last 2 versions" ] }vue 2.6.11 がインストールされました
4.vue 動作確認用サンプル
そのまま実行してもつまらない?ので
動作確認用のサンプルをばsrc/App.vue<template> <div> {{ messages }} <div> <ol> <li v-for="(it, idx) in items" :key="it.id"> {{ it }} <button v-on:click="del_item( idx )"> x </button> </li> </ol> <input v-model="item" /> <button v-on:click="add_item()">Add Item</button> </div> </div> </template> <script> export default { data () { return { messages: 'Hello World!', items: [ 'aaa', 'bbb', 'ccc', ], item: 'Hello Vue.js!', } }, methods: { add_item: function () { this.items.push( this.item ); this.item = ''; }, del_item: function ( _idx ) { this.items.splice( _idx, 1 ) } } } </script>こちらを参考とさせていただきました。よいサンプルをありがとうございます。
https://qiita.com/yamazaki3104/items/c793d77a19f104c2a63e
ちょこっと Vue-cli 用? に変更してますコマンドプロンプトで以下を実行することで動作確認できます
管理者権限なくてもポート開けるのね> npm run serve ・・・・ DONE Compiled successfully in 11754ms App running at: - Local: http://localhost:8080/ - Network: http://10.20.30.40:8080/ Note that the development build is not optimized. To create a production build, run npm run build.
以上
管理者権限のない Windows で Vue 開発する手順でしたちなみに Visual Studio Code も管理者権限なくインストール可能です
こちら https://code.visualstudio.com/download の 「User Installer」をダウンロードして実行するだけです
管理者権限なくても普通にインストールできちゃいましたこれで開発はかどります
- 投稿日:2020-03-16T10:42:48+09:00
anyenv 経由の nodenv 経由で Node.js をインストールする
背景
Node.jsをインストールする方法がたくさんあって迷う問題。
- 公式のインストーラ を使う場合
- homebrew 経由でインストールする場合
- nvm 経由でインストールする場合
- nodebrew 経由でインストールする場合
- ndenv 経由でインストールする場合
- nodenv 経由でインストールする場合
- anyenv 経由でインストールする場合 (当記事)
いや多すぎんだろ!!?
公式のインストーラ & homebrew 経由でインストールした時の問題
- 複数のNodeバージョンをインストールできない。
複数のプロジェクトでNodeのバージョンが異なってたら切り替えがめんどくさい?
nodebrew & nvm 経由でインストールした時の問題
複数のNodeバージョンをインストールできるようになりました。
nodebrew use <version>
,nvm use <version>
でバージョン切り替えがめんどくさい再インストールする必要はないが、コマンドを打つのでさえめんどくさい?
ndenv 経由でインストールした時の問題
.node-version
ファイルが配置されていれば自動でバージョン切り替えできる?
- パッケージが非推奨になった?
nodenv
がオススメだよと教えてもらうnodenv 経由でインストールした時の問題
デフォルトパッケージプラグインもあって
nodenv
めがっさ便利☺️
- nodenv, goenv, phpenv, pyenv, rbenv... ***env何個あるねん!
~/.bash_profile
の初期設定がかさばる問題
- 複数の
**env
ツールを入れない場合は良いと思うanyenv 経由でインストールした時
?
前提条件
- homebrew がインストールされていること
既にNode.jsが入っている人
こちらの記事を参考にアンインストールしてクリーンな状態にしてください。
anyenv をインストールする
$ brew install anyenv $ anyenv init $ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile $ exec $SHELL -l $ anyenv -v anyenv 1.1.1anyenv-update プラグイン をインストールする
$ mkdir -p $(anyenv root)/plugins $ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update使い方
$ anyenv update
anyenv
,anyenv
のプラグイン,**env
,**env
プラグインをまとめてアップデートしてくれます。
nodenv install -l
等でインストールしたいバージョンが見つからなかった時に実行してください。anyenv-git プラグイン をインストールする
$ mkdir -p $(anyenv root)/plugins $ git clone https://github.com/znz/anyenv-git.git $(anyenv root)/plugins/anyenv-git使い方
$ anyenv git pull $ anyenv git gc $ anyenv git remote -v $ anyenv git status
**env
,**env
のプラグインのgit
操作をまとめて実行できます。anyenv でインストール可能なenv系一覧
$ anyenv install -l Renv crenv denv erlenv exenv goenv hsenv jenv luaenv nodenv phpenv plenv pyenv rbenv sbtenv scalaenv swiftenv tfenv # anyenv でインストールしたenvツールの一覧 $ anyenv versionsanyenv 経由で nodenv をインストールする
$ anyenv install nodenv $ exec $SHELL -lnodenv-default-packages プラグイン
$ touch $(nodenv root)/default-packages使い方
$ vim $(nodenv root)/default-packages yarn typescriptNode.js をインストールした際に
default-packages
に記載したパッケージをグローバルインストールしてくれる。nodenv 経由で Node.js をインストールする
$ nodenv install -l $ nodenv install 13.10.1 $ nodenv global 13.10.1 $ exec $SHELL -l $ node -v v13.10.1 $ npm -v 6.13.7特定のディレクトリだけNodeバージョンを切り替える
$ nodenv install 10.13.0 $ mkdir testdir $ cd testdir $ nodenv local 10.13.0 $ node -v v10.13.0 $ npm -v 6.4.1
nodenv local x.x.x
を実行すると.node-version
ファイルが作成される。$ cat .node-version 10.13.0プロジェクトルートに配置しておけば、自動的にバージョンを切り替えてくれる。
nodenv-default-packages 後からパッケージをグローバルインストール
# 指定したバージョンにパッケージをグローバルインストールする $ nodenv default-packages install 10.13.0 # すべてのバージョンにパッケージをグローバルインストールする $ nodenv default-packages install --all
- 投稿日:2020-03-16T10:20:28+09:00
Cloud9のNode.jsのバージョンを上げる
はじめに
Cloud9で使用しているデフォルトのOSであるAmazon Linuxでは、Node.jsのバージョンがv10.19.0のため、2020/03/16時点で最新のv12.16.1にバージョンアップする。
前提条件
- AWSにサインアップしていること
- Cloud9のプロジェクトを作成していること
- 本手順ではAmazon Linuxを使用している
cat /etc/system-release Amazon Linux AMI release 2018.03
手順
以下のコマンドを実行します。
nvm install v12.16.1 nvm alias default v12.16.1 npm update -g npm npm i -g npm