ReactReact NativeVSCode AtomColor PickerSublime Text 3拡張機能

VSCode に乗り換えてはじめてやること!〜初心者向け〜

announcement-3509489 React
スポンサーリンク

背景

プログラミングの為には、自分と合うテキストエディターを選ぶって大事ですね。状況によって求める機能なども変わって来ますし。。

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-setup-macos-01
▲ ご自身の OS に合わせてダウンロードします。

インストールが終わったら VSCode を起動します。

拡張機能 を設定する

VSCode を有効に使おう!
  • Step 1
    React Native snippet をインストールします。

    一旦慣れたら、このような Snippet なしではコード書けない!

    vscode-setup-macos-02
    ▲ VSCode を開いて、左パネルで ❶ を選択、❷で「react native snippet」を打ち組み、❸を選択して右下の「Install」ボタンをクリックしてインストールします。( ※ 設置済みで歯車になっています )

    これで設定は完了です。これ一つで七つの言語をサポートしてくれます。

    • 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 ファイルを作成 )

    vscode-setup-macos-03
    ▲ rnc と打ち組むと上のように表示されます。( 表示されなかったらVSCodeを再起動 )
    vscode-setup-macos-04
    ▲ すると、react native の標準のクラス文が生成されます。

    他、様々な ショートカットキーがありますので、ここ から確認しながら試してみましょう。

  • Step 2
    Emmet はデフォルトで使えます。

    HTML、CSS などのタグを完成してくれます。

    使い方をみてみましょう。

    VSCode で html5.html のような任意のファイルを作成して開きます。

    html:5 と打ち込んで Enter キーを押すと下記のようになります。

    vscode-setup-macos-07
    vscode-setup-macos-08

    詳細なショートカットキーの一覧や使い方は ここ をご参考ください。

  • Step 3

    Prettier – Code formatter をインストールします。

    React Native snippet と同じ手順でインストールしてください。

    vscode-setup-macos-09

    VSCodeSettingsEditor: Format On SaveTrue にすることで、ファイルを保存すると自動で指定のフォーマットに変換してくれます。

    vscode-setup-macos-11
    ▲ 「Code」>「Preferences」>「Settings」をクリックします
    vscode-setup-macos-10
    ▲ 「Editor: Format On Save」を打ち込んでチェックを入れます

    動作を確認しましょう。

    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 4
    ESLint を設定します。

    ESLint は VSCode の拡張機能をインストールするだけではなくターミナルで設定を行う必要があります。

    まず、VSCode の拡張機能をインストールします。

    vscode-setup-macos-12

    ▼ ターミナルを開いて 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>インポートしたのに使われていません! とエラーを吐き足せば正常に動作していることです。

    vscode-setup-macos-13

    最後に、

    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 のように VSCodeSettingsEditor: Default Formatterdbaeumer.vscode-eslint にすると、JavaScript の書き方のチェックやコードのフォーマットの整理をファイルを保存するたびにチェックしてくれます。

    ※ ESLint のより詳細な設定方法がありますが、設定ファイルの中の "extends": [ "eslint:recommended"]によって デフォルトのルール をチェックできます。

  • 任意
    Color Theme を変更します。

    Sublime Text 3のようなテーマに変更します。VSCode を開いて下記のように設定します。

    vscode-setup-macos-05
    ▲ 「Code」>「Preferences」>「Color Theme」
    vscode-setup-macos-06
    ▲ 「Monokai」を選択します。

React Native Snippet をカスタマイズする

VSCode を開いて設定をしましょう。
以下の設定方法は Custom React Native Snippets をベースにしています。

例:RNSnippet のデフォルトの rnc コマンドとカスタマイズ後の imrnc を比較してみると、以下のようになります。

  • react-native をインポートする際に StyleSheet も追加されます。
  • View コンポーネントに style={styles.container} が追加されます。
  • styles.container が追加されます。
vscode-setup-macos-16
rnc 実行結果
vscode-setup-macos-17
imrnc 実行結果

ほか、よく利用するコードスタイルを改良してくれますので、そのまま使用出来るし、さらにご自身でカスタマイズして使っても良いかと思います。

カスタマイズ方法

  • Step 1
    「Code」>「Preferences」>「User Snippets」 をクリックします。
    vscode-setup-macos-14
  • Step 2
    javascript.json ファイルを作成します。

    デフォルトの javascriptreact.json を利用すると動作しなかった為、
    ❶「New Global Snippets file…」をクリックし、❷ 「javascript.json」 と打ち込みます。
    javascriptreact.json のファイルをコピー&ペーストして保存します。

  • Step 3
    jsx-attr.json ファイルを作成します。

    ❶「New Global Snippets file…」をクリックし、❷ 「jsx-attr.json」 と打ち込みます。
    jsx-attr.json のファイルをコピー&ペーストして保存します。

  • Step 4
    jsx.json ファイルを作成します。

    ❶「New Global Snippets file…」をクリックし、❷ 「jsx.json」 と打ち込みます。
    jsx.json のファイルをコピー&ペーストして保存します。

    vscode-setup-macos-15
  • Step 5
    VSCode を再起動して動作確認を行います。

    任意の .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」ボタンをクリックしてインストールします。( ※ 設置済みで歯車になっています )

vscode-setup-macos-18

これでインストール完了なので、早速使ってみます。

ダイアログボックスを起動するにはカラーコードを入れたいところに移動し、「Option + Cキーを押して離す → その後 P キーを押す」としばらくするとピッカーが表示されます。

vscode-setup-macos-20
▲ backgroundColor を設定する為、Option+Cを押して離す、すぐPを押します。
vscode-setup-macos-21
▲ カラーピッカーが表示されます。( simple テーマ適用 )
使用するカラーを選択して「OK」ボタンをクリックするだけで backgroundColor が変更されます。

カラーピッカーのテーマをカスタマイズできます。

VSCodeの「Settings」>「User」>「Extensions」>「Color Picker confi…」を選択します。
colorHelper.pickerForm」に使用したいテーマ名を打ち込みます。

vscode-setup-macos-19
▲ default、largePalette、simple、compact、compact2、byPalette から選択できます。

詳細は ここ をご参考ください。

ちなみに、ダイアログボックスの起動が遅いと感じた場合は colorHelper.resident にチェックを入れることで、表示速度がアップするらしいです。

VSCode を存分に使う!

上記のように個人的に必要とする必要最小限の拡張機能を適用しました。
あとは、使いながら必要に応じて拡張機能を追加すれば良いでしょう。これからはより楽々にコードをかけると思います。

スポンサーリンク

コメント

タイトルとURLをコピーしました