Salesforce上でReactJSベースのSPA(Single Page Application)を作成するためのテンプレートです。 Gulp.jsを利用して自動ビルド・デプロイが可能です。
ビルドシステム内にソースコードを変換する仕組みが組み入れられているため、コードをCoffeeScriptで書くことも、ES6 JavaScriptの文法を用いることも、もちろん通常のJavaScript(ES5)そのままでの利用もできます。
ReactJSのコンポーネントのマークアップを記述する方式として、コード内にJSXを用いて開発することもできますが、react-templates 形式のテンプレートファイルに分離することもできるようになっています。
Node.jsの0.10かそれ以上がインストールされていることを確認して下さい。
$ node --version
確認したら、以下のコマンドをプロジェクトディレクトリのルートで実行します。
$ npm install
$ bower install
gulp
コマンドがインストールされていない場合は、以下のコマンドを実行します
$ npm install -g gulp
gulp
コマンドを実行してソースコードから実行用のコードを生成します。
$ gulp
watch
タスクオプションを指定してgulpを実行すると、ソースコードファイルの変更を監視して自動的にビルドを実行します。
$ gulp watch
以下のコマンドでWebアプリケーションサーバを起動できます。
$ gulp dev
http://localhost:8000
にアクセスしてアプリのプレビューを表示します。
このコマンドでソースコードの変更の監視も同時におこないます。
単体テストを実行するには以下のコマンドを実行します。
$ gulp test
ソースコードファイル変更時に自動的にテストを実行するには以下のコマンドを実行します。
$ gulp test:watch
Salesforceに接続するユーザ名・パスワード(セキュリティトークンを含む)を環境変数に指定して、gulp deploy
コマンドを実行します。
$ [email protected] SF_PASSWORD=password gulp deploy
あるいは、プロジェクト内に .env
というファイルを用意し、中身に環境変数を KEY=VALUE
の形式で記述しておき、
[email protected]
SF_PASSWORD=password
その後 foreman
を経由して gulp deploy
を実行します。
$ nf run gulp deploy
このnf
コマンドは npm install -g foreman
でインストール可能です。
├── app # ソースコードディレクトリ
│ ├── assets # HTML、画像、フォントなどの静的ファイル
│ │ ├── index.html # エントリポイントとなるHTMLファイル
│ │ ├── ...
│ │
│ ├── scripts # スクリプトファイル(JSへコンパイル)
│ │ ├── components # ReactJS コンポーネントのスクリプトコード
│ │ │ ├── bar.jsx # ES6 JS : .js および .jsx ファイル(JSX記述可能)
│ │ │ ├── baz.cjsx # CoffeeScript : .coffee および .cjsx ファイル(JSX記述可能)
│ │ │ ├── foo.coffee
│ │ │ ├── root.js
│ │ │ ├── ...
│ │ │
│ │ ├── main.js # エントリポイントとなるスクリプト
│ │ ├── ...
│ │
│ ├── styles # LESSスタイルシートファイル(CSSへコンパイル)
│ │ ├── components # ReactJS コンポーネントのスタイルシート
│ │ │ ├── bar.less
│ │ │ ├── baz.less
│ │ │ ├── foo.less
│ │ │ ├── ...
│ │ │
│ │ ├── main.less # エントリポイントとなるスタイルシート
│ │ ├── ...
│ │
│ └── templates # React-templates 形式のファイルを格納
│ └── components
│ ├── foo.rt # app/scripts/components/foo.coffee に対応
│ ├── root.rt # app/scripts/components/root.js に対応
│ ├── ...
│
├── build # Gulpによって生成されるビルドファイルを格納するディレクトリ
│ ├── app
│ │ ├── index.html
│ │ ├── scripts
│ │ ├── styles
│ │ ├── ...
│ │
│ └── test
│ ├── ...
│
├── bower.json # 依存ライブラリの設定
├── gulpfile.coffee # Gulp ビルドスクリプト
├── package.json # プロジェクトの各種設定
│
├── src # Force.com プロジェクトのソースコード
│ ├── package.xml
│ ├── pages
│ │ ├── MyAppPage.page
│ │ └── MyAppPage.page-meta.xml
│ └── staticresources
│ ├── MyApp.resource # ビルドされたファイルを含むZIPファイル (gulpによって生成)
│ ├── MyApp.resource-meta.xml
│ ├── MyAppLib.resource # Bowerのライブラリを含むZIPファイル (gulpによって生成)
│ └── MyAppLib.resource-meta.xml
│
└── test # テストコードディレクトリ
├── e2e # End-to-End テストのためのコード(protractorを想定)
│ ├── app001.test.js
│ ├── ...
│
└── unit # 単体テスト
├── components # ReactJS コンポーネントの単体テスト
│ ├── bar.test.js
│ ├── baz.test.js
│ ├── foo.test.js
│ ├── ...
├── ...