背景
プログラミングの為には、自分と合うテキストエディターを選ぶって大事ですね。状況によって求める機能なども変わって来ますし。。
2015 年頃から Atom を最初に使用したが使えば使うほど重すぎて使えるものにならなかったので、Sublime Text 3 に乗り換えた。軽くてサクサク書けるのが気に入ったが、
「有料版を買ってくれ!」と頻繁に警告ポップアップが出るが、エディター上でフォルダーやファイル管理 ( 作成、削除など ) が面倒、ファイルを FTP でサーバにアップするのも面倒、などの理由で有料版 ( $80 ) を使うほどのものではないと思いました。
エディターを変えると、Emmet、Snippet、ESLint、Prettier などの設定を最初からやり直さないといけないのがエディターを変えない理由の一つでしたが、これから React Native で開発することになったので、今まで使用していた Sublime Text 3 から Visual Studio Ccode ( 以下、VSCode ) に変えることにしました。
少し使い始めてみたら、Atom や Sublime Text 3 の良い機能を VSCode でも使えることで少し驚きました。これ以上はエディターを変えたくない!長〜く付き合える VSCode であれ!
現状・条件
- VSCode Version: 1.42.0
- MacBook Pro / macOS Catalina 10.15.3 で作業します。
- Emmet、React Native Snippet、ESLint、Prettier などの設定を行い、使い方も簡単に触れます。
VSCode をインストールする
それでは、ここ から Vscode をダウンロードしてインストールしてください。
インストールが終わったら VSCode を起動します。
拡張機能 を設定する
- Step 1React Native snippet をインストールします。
一旦慣れたら、このような Snippet なしではコード書けない!
これで設定は完了です。これ一つで七つの言語をサポートしてくれます。
- JavaScript (.js)
- Redux (.js)
- ReactJS (.js)
- React Native (.js)
- React Native StyleSheet (.js)
- TypeScript ReactJS (.tsx)
- Typescript React Native (.tsx)
では、使い方をみてみましょう。
VSCode で任意の .js ファイルを作成して開きます。( ここでは rn-snippet.js ファイルを作成 )
他、様々な ショートカットキーがありますので、ここ から確認しながら試してみましょう。
- Step 2Emmet はデフォルトで使えます。
HTML、CSS などのタグを完成してくれます。
使い方をみてみましょう。
VSCode で html5.html のような任意のファイルを作成して開きます。
html:5
と打ち込んで Enter キーを押すと下記のようになります。詳細なショートカットキーの一覧や使い方は ここ をご参考ください。
- Step 3
Prettier – Code formatter をインストールします。React Native snippet と同じ手順でインストールしてください。
VSCode の Settings で
Editor: Format On Save
を True にすることで、ファイルを保存すると自動で指定のフォーマットに変換してくれます。動作を確認しましょう。
VSCode で Prettier-test.js のように任意のファイルを作成して、下記のように書きます。
import React, {Component} from 'react' import {View,Text} from 'react-native'
▲ のコードには
{Component}
、{View,Text}
にすベースが入ってない、各ラインの後ろに;
がついていない状態ですが、このファイルを保存すると、▼ のようにスペースとセミコロンが勝手に追加されます。import React, { Component } from "react"; import { View, Text } from "react-native";
- Step 4ESLint を設定します。
ESLint は VSCode の拡張機能をインストールするだけではなくターミナルで設定を行う必要があります。
まず、VSCode の拡張機能をインストールします。
▼ ターミナルを開いて
eslint
を npm でインストールします。( ここ を参考 )
ESLint を設定したい場所に移動して (package.json
ファイルがあるところに移動 )、npx eslint --init
コマンドを打ち込んで設定ファイルを作成します。対話式のインターフェースで必要なオプションを選択するだけです。try🐶everything ReactNative$ npm install eslint --save-dev try🐶everything ReactNative$ npm install eslint-plugin-react --save-dev try🐶everything ReactNative$ eslint --init ? How would you like to use ESLint? To check syntax and find problems ? What type of modules does your project use? JavaScript modules (import/export) ? Which framework does your project use? React ? Does your project use TypeScript? No ? Where does your code run? Browser ? What format do you want your config file to be in? JavaScript Local ESLint installation not found. The config that you've selected requires the following dependencies:
すると、下記のように
.eslintrc.js
ファイルが自動作成されますが、
このまま ESLint を実行すると、Warning: React version not specified in eslint-plugin-react settings.
というエラーが発生してしまいます。// .eslintrc.js module.exports = { "env": { "browser": true, "es6": true }, "extends": [ "eslint:recommended", "plugin:react/recommended" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 2018, "sourceType": "module" }, "plugins": [ "react" ], "rules": { } };
下記のように
settings:
を追加すればエラーが消えます。module.exports = { settings: { react: { version: "detect" } }, env: { browser: true, es6: true }, ...
ESLint の動作を確認しましょう。
VSCode を再起動して
eslint-test.js
のようなファイルを下記のように作成します。import React, { Component } from "react"; import { View, Text } from "react-native"; export default class ESLintTest extends Component { constructor(props) { super(props); this.state = {}; } render() { return ( <View> <Text>ESLintTest</Text> </View> ); } }
▲ ファイルには間違っているところがありますので、それを ESLint が見つけ出せば正常に動作することになります。
誤:
return <View>ESLintTest</View>;
正:return <View><Text>ESLintTest</Text></View>;
npx eslint eslint-test.js
コマンドを実行して ESLint の動作を確認すると下記のようの<Text>
を インポートしたのに使われていません! とエラーを吐き足せば正常に動作していることです。最後に、
ESLint で Prettier をコントロールするように設定を追加します。
ターミナルで以下のパッケージをインストールし、
yarn add -D eslint-plugin-prettier eslint-config-prettier
.eslintrc.js
設定ファイルに以下を追加します。// .eslintrc.js { … "extends": ["prettier"], "plugins": ["prettier"], "rules": { "prettier/prettier": "error" } … }
↓↓↓完成版
module.exports = { "env": { "browser": true, "es6": true }, "extends": [ "prettier", "eslint:recommended", "plugin:react/recommended" ], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 2018, "sourceType": "module" }, "plugins": [ "react", "prettier" ], "rules": { "prettier/prettier": "error" } };
次は、
Step 3
のように VSCode の Settings でEditor: Default Formatter
をdbaeumer.vscode-eslint
にすると、JavaScript の書き方のチェックやコードのフォーマットの整理をファイルを保存するたびにチェックしてくれます。※ ESLint のより詳細な設定方法がありますが、設定ファイルの中の
"extends": [ "eslint:recommended"]
によって デフォルトのルール をチェックできます。 - 任意Color Theme を変更します。
Sublime Text 3のようなテーマに変更します。VSCode を開いて下記のように設定します。
React Native Snippet をカスタマイズする
VSCode を開いて設定をしましょう。
以下の設定方法は Custom React Native Snippets をベースにしています。
例:RNSnippet のデフォルトの rnc
コマンドとカスタマイズ後の imrnc
を比較してみると、以下のようになります。
react-native
をインポートする際にStyleSheet
も追加されます。View
コンポーネントにstyle={styles.container}
が追加されます。styles.container
が追加されます。
ほか、よく利用するコードスタイルを改良してくれますので、そのまま使用出来るし、さらにご自身でカスタマイズして使っても良いかと思います。
カスタマイズ方法
- Step 1「Code」>「Preferences」>「User Snippets」 をクリックします。
- Step 2javascript.json ファイルを作成します。
デフォルトの javascriptreact.json を利用すると動作しなかった為、
❶「New Global Snippets file…」をクリックし、❷ 「javascript.json」 と打ち込みます。
javascriptreact.json のファイルをコピー&ペーストして保存します。 - Step 3jsx-attr.json ファイルを作成します。
❶「New Global Snippets file…」をクリックし、❷ 「jsx-attr.json」 と打ち込みます。
jsx-attr.json のファイルをコピー&ペーストして保存します。 - Step 4jsx.json ファイルを作成します。
❶「New Global Snippets file…」をクリックし、❷ 「jsx.json」 と打ち込みます。
jsx.json のファイルをコピー&ペーストして保存します。 - Step 5VSCode を再起動して動作確認を行います。
任意の
.js
ファイルを作成します。▼ のショートカットキーを打ち込んで試してみます。// より便利なショートカットキーの一覧 imrnc - Import React Native Component imrnfc - Import React Native Functional Component imrnp - Create Panresponder.create imrnss - Create React Native Style Sheet clog - console.log("$1") rnmap - React Native Map Method rndime - const {width,height} = Dimensions.get('window') rncomp - Create a React Native Component rnfcomp - Create a Functional React Native Component rnajc - alignItems:'center',justifyContent:'center' <but - <Button title='${1:title}' onPress={()=>${2:alert('button pressed')}}/>
設定を完了したら、新たなショートカットキーの結果は ▼ です
// imrnc import React, { Component } from "react"; import { View, Text, StyleSheet } from "react-native"; class componentName extends Component { render() { return ( <View style={styles.container}> <Text>componentName</Text> </View> ); } } export default componentName; const styles = StyleSheet.create({ container: { flex: 1, alignItems: 'center', justifyContent: 'center' } }); //imrnfc import React from "react"; import { View, Text, StyleSheet } from "react-native"; const componentName = (props) => ( <View style={styles.container}> <Text>componentName</Text> </View> ) export default componentName; const styles = StyleSheet.create({ container: { flex: 1, alignItems: 'center', justifyContent: 'center' } }); // imrnp this.panResponder = PanResponder.create({ onMoveShouldSetPanResponder: (evt, gestureState) => true, onPanResponderGrant: (evt, gestureState) =>{ }, onPanResponderMove: (evt, gestureState) => { }, onPanResponderRelease: (evt, gestureState) => { }, }) // imrnss, rnss const styles = StyleSheet.create({ }); // clog, clg console.log(object) console.log() // rnmap return items.map((item,index)=>{ return( <View></View> )}) // rndime const {width,height} = Dimensions.get('window') // rncomp class componentName extends Component{ render(){ return ( <View style={{flex:1,alignItems:'center',justifyContent:'center'}}> <Text>componentName</Text> </View> ); } } // rnfcomp const componentName = (props) => ( <View style={{flex:1,alignItems:'center',justifyContent:'center'}}> <Text>componentName</Text> </View> ) // rnajc alignItems:'center',justifyContent:'center' // <but <Button title='title' onPress={()=>alert('button pressed')}/>
※ 2020/02/11日、「Color Picker を追加する」を追記
Color Picker を追加する
VSCode を開いて、左パネルで ❶ を選択、❷ で「color picker」を打ち組み、❸ を選択して右下の「Install」ボタンをクリックしてインストールします。( ※ 設置済みで歯車になっています )
これでインストール完了なので、早速使ってみます。
ダイアログボックスを起動するにはカラーコードを入れたいところに移動し、「Option + C
キーを押して離す → その後 P
キーを押す」としばらくするとピッカーが表示されます。
カラーピッカーのテーマをカスタマイズできます。
VSCodeの「Settings」>「User」>「Extensions」>「Color Picker confi…」を選択します。
「colorHelper.pickerForm
」に使用したいテーマ名を打ち込みます。
詳細は ここ をご参考ください。
ちなみに、ダイアログボックスの起動が遅いと感じた場合は colorHelper.resident
にチェックを入れることで、表示速度がアップするらしいです。
VSCode を存分に使う!
上記のように個人的に必要とする必要最小限の拡張機能を適用しました。
あとは、使いながら必要に応じて拡張機能を追加すれば良いでしょう。これからはより楽々にコードをかけると思います。
コメント