30 KiB
こちらのガイドラインに従って、システム上で freeCodeCamp をローカルに設定してください。 定期的に貢献したい場合は、是非お勧めします。
いくつかのコントリビューションワークフローでは、freeCodeCampをローカルで実行する必要があります。 例えば、コーディングの課題をプレビューしたり、コードベースのバグをデバッグして修正したりします。
[!ヒント] freeCodeCampの設定に興味がない場合は、無料のオンライン開発環境であるGitpodの使用を検討してください。
(ブラウザで freeCodeCamp 用のコード対応開発環境を開始します。
ローカルマシンを準備する
お使いのオペレーティングシステムの前提ソフトウェアをインストールすることから開始します。
主に *nix システムでの開発をサポートしています。 私たちのスタッフとコミュニティ貢献者は、UbuntuとmacOSにインストールされているツールを使用して、定期的にコードベースを使用しています。
We also support Windows 10 via WSL2, which you can prepare by reading this guide.
コミュニティメンバーの中には、Git for Windows(Git Bash)やWindowsにインストールされている他のツールを使用して、Windows 10でネイティブに開発する人もいます。 現時点では、このようなセットアップの公式サポートはありません。 代わりに WSL2 を使用することをお勧めします。
前提条件:
前提条件 | バージョン | メモ |
---|---|---|
Node.js | 12.x |
LTSスケジュール |
npm (Nodeにバンドルされています) | 6.x |
LTS リリースはありません。 Node LTS にバンドルされているバージョンを使用しています。 |
MongoDBコミュニティサーバー | 3.6 |
リリースノート, 注意: 現在 3.6 にあります。 , アップグレードが予定されています. |
[!DANGER] 異なるバージョンの場合は、推奨バージョンをインストールしてください。 推奨バージョンのインストールに関する問題のみサポートできます。 詳細は troubleshooting を参照してください。
Node.js がすでにマシンにインストールされている場合、以下のコマンドを実行してバージョンを検証します。
node -v
npm -v
[!TIP] 長期サポート(LTS)リリースとも呼ばれる、上記の安定版の最新リリースにアップデートすることを強くお勧めします。
必要条件がインストールされたら、開発環境を準備する必要があります。 これは多くの開発ワークフローに共通しており、一度だけこれを行う必要があります。
以下の手順に従って、開発環境を準備してください。
-
まだインストールしていない場合は、 Git またはお気に入りのGitクライアントをインストールしてください。 最新バージョンにアップデートすると、お使いのOSにバンドルされているバージョンが古くなる可能性があります。
-
(オプションですが推奨) GitHub用のSSHキー を設定します。
-
お好みのコードエディタをインストールします。
Visual Studio Code または Atom を使用することを強くお勧めします。 これらは素晴らしい、自由でオープンなソースコードエディタです。
-
コードエディタのリンティングを設定します。
You should have ESLint running in your editor, and it will highlight anything that doesn't conform to freeCodeCamp's JavaScript Style Guide.
[!ヒント] リンティングエラーを無視しないでください。 これらは あなたを 助け、クリーンでシンプルなコードベースを保証するためのものです。
GitHub でリポジトリをフォーク
Forking は、GitHub上でfreeCodeCampのメインリポジトリ(別名、 repo)のコピーを入手するステップです。
GitHub上のfreeCodeCampのコピーを自分で作ることができるので、これは不可欠です。 または、ローカルで作業するためにリポジトリをダウンロード(クローン)します。 後で、プルリクエスト(PR)を介してフォークからメインリポジトリにプルする変更をリクエストすることができます。
[!TIP]
https://github.com/freeCodeCamp/freeCodeCamp
のメインリポジトリはアップストリーム
リポジトリと呼ばれることがあります。
https://github.com/YOUR_USER_NAME/freeCodeCamp
のフォークは、しばしばオリジン
リポジトリと呼ばれます。
以下の手順に従って、 https://github.com/freeCodeCamp/freeCodeCamp
リポジトリをフォークしてください。
-
GitHubのfreeCodeCampリポジトリに移動: https://github.com/freeCodeCamp/freeCodeCamp
-
インターフェースの右上隅にある「フォーク」ボタンをクリックします (詳細はこちら)
-
リポジトリがフォークされると、
https://github.com/YOUR_USER_NAME/freeCodeCamp
にある freeCodeCamp リポジトリのコピーに移動します。
GitHubでfreeCodeCampをフォークする方法 (スクリーンショット)

GitHub からフォークを複製
Cloning is where you download a copy of a repository from a remote
location that is either owned by you or by someone else. あなたの場合、このリモートの場所は freeCodeCamp の fork
で、 https://github.com/YOUR_USER_NAME/freeCodeCamp
で利用できるはずです。
以下のコマンドをローカルマシンで実行します。
-
Terminal / Command Prompt / Shellをプロジェクトディレクトリで開く
例えば:
/yourprojectsdirectory/
-
freeCodeCampのフォークをクローンし、
YOUR_USER_NAME
をGitHub Username に置き換えます。git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git
これにより、freeCodeCampリポジトリ全体がプロジェクトディレクトリにダウンロードされます。
注意: --depth=1
は最新の履歴/コミットのみでフォークの浅いクローンを作成します。
親からの同期を設定
フォークのコピーをダウンロードしたので、親リポジトリに 上流の
リモートを設定する必要があります。
前述ののように、メインリポジトリは 上流
リポジトリと呼ばれています。 フォークは origin
リポジトリと呼ばれています。
origin
リポジトリに加えて、ローカルクローンから upstream
リポジトリへの参照が必要です。 これは、フォークやクローンを繰り返し行うことなく、メインリポジトリからの変更を同期できるようにするためです。
-
ディレクトリを新しいfreeCodeCampディレクトリに変更:
cd freeCodeCamp
-
freeCodeCampリポジトリへのリモート参照を追加します。
git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git
-
設定が正しいことを確認してください:
git remote -v
出力は以下のようになります:
origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch) origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push) upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch) upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push)
freeCodeCampをローカルで実行中
freeCodeCampのローカルコピーがあるので、これらの指示に従ってローカルで実行することができます。 これにより次のことが可能になります:
- 学習プラットフォーム上に表示されるページへの編集をプレビューします。
- UI関連の問題と機能強化に取り組む。
- アプリケーション・サーバーとクライアント・アプリの問題をデバッグして修正します。
問題が発生した場合は、最初に問題の Web 検索を実行し、すでに解決済みであるかどうかを確認します。 解決策が見つからない場合 解決策については、 GitHubの課題 ページを検索し、まだ報告されていない場合は問題を報告してください。
そしていつものように お気軽に Gitter または Discord サーバーの貢献者チャットルームをご覧ください。 迅速な問い合わせを行います
[!TIP] ファイルを編集するだけの場合は、freeCodeCampの実行をローカルでスキップすることができます。 例えば、
rebase
を実行したり、merge
の競合を解決したりします。後でいつでもこの手順に戻ることができます。 マシンでアプリを実行する必要がない場合は、 **** だけこの手順をスキップしてください。
依存関係の設定
ステップ 1: 環境変数ファイルを設定
デフォルトの API キーと環境変数は、ファイル sample.env
に格納されます。 このファイルは、インストール時に動的にアクセスされる .env
という名前の新しいファイルにコピーする必要があります。
# "sample.env" のコピーを作成し、".env" という名前を付けます。
# "sample.env" のコピーを作成し、".env" という名前を付けます。
# Populate it with the necessary API keys and secrets:
# macOS / Linux
cp sample.env .env
# Windows
copy sample.env .env
.env
ファイルのキーは ローカルでアプリを実行するために変更する必要はありません。 sample.env
をそのままにしておくことができます。
[!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the
.env
file.
ステップ 2: 依存関係のインストール
このステップでは、アプリケーションを実行するために必要な依存関係をインストールします。
npm ci
ステップ 3: MongoDBを起動し、データベースをシードする
アプリケーションをローカルで実行する前に、MongoDBサービスを開始する必要があります。
[!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the
MONGOHQ_URL
value in the.env
file should work fine. カスタム設定を使用している場合は、必要に応じてこの値を変更してください。
MongoDBサーバーを別の端末で起動します。
-
macOS & Ubuntuの場合:
mongod
-
Windows では、
mongod
バイナリへのフルパスを指定する必要があります。"C:\Program Files\MongoDB\Server\3.6\bin\mongod"
3.6
をインストールしたバージョンに置き換えてください
[!TIP] MongoDBをバックグラウンドサービスとしてインストールすることで、毎回起動する必要はありません。 OS のドキュメント で詳しく学ぶことができます。
次に、データベースをシードしましょう。 このステップでは、MongoDBサーバーにサービスによって必要とされる初期データセットを埋める以下のコマンドを実行します。 これらには、他のものの中でも、いくつかのスキーマが含まれます。
npm run seed
ステップ 4: freeCodeCampクライアントアプリケーションとAPIサーバーを開始
APIサーバーとクライアントアプリケーションを起動できるようになりました。
npm run develop
この単一コマンドは、APIサーバーや利用可能なクライアントアプリケーションを含むすべてのサービスを起動します。
[!NOTE] 準備ができたら、ウェブブラウザを開き、 ** http://localhost:8000** をご覧ください。 アプリがロードされたら、おめでとうございます - あなたはすべての準備ができています! これで、あなたのローカルマシン上で動作するfreeCodeCampの学習プラットフォーム全体のコピーがあります。
[!TIP] APIサーバーは
http://localhost:3000
でAPIを提供します。 Gatsby アプリはクライアントアプリケーションをhttp://localhost:8000
で提供します。
http://localhost:3000/explorer にアクセスすると、利用可能なAPIが表示されます。
ローカル ユーザーでサインイン
ローカル セットアップでは、データベース内のローカル ユーザーが自動的に入力されます。 Sign In
ボタンをクリックすると、ローカルアプリケーションへの認証が自動的に行われます。
ただし、ユーザーポートフォリオページにアクセスするのは少し難しいです。 開発中 Gatsbyは、クライアント側のページにサービスを引き継ぎ、ローカルで作業する際に、ユーザーポートフォリオの 404
ページを取得します。
"Preview Custom 404 Page" ボタンをクリックするだけで、正しいページに移動できます。
ローカルで作業するときのサインイン方法(スクリーンショット)

ローカルで変更を行う
ファイルに変更を加え、フォークのローカルクローンに変更を反映できるようになりました。
以下の手順に従ってください:
-
master
ブランチにいることを確認してください。git status
次のような出力を得る必要があります。
ブランチマスター のブランチは 'origin/master' で最新です。 コミットする必要はありません。 作業ディレクトリをクリーンアップします。
マスターにいない場合、または作業ディレクトリがきれいでない場合は、未処理のファイル/コミットとチェック アウトを解決します
マスター
:git checkout master
-
freeCodeCamp上流の
マスター
ブランチからの最新の変更をローカルのマスターブランチに同期します:[!WARNING] フォークの
master
ブランチから行った未処理のプルリクエストがある場合。 このステップの最後にそれらを失うことになりますこの手順を実行する前に、プルリクエストがモデレータによってマージされていることを確認してください。 このシナリオを回避するには、 マスター 以外のブランチで
常に
作業する必要があります。この手順 は、freeCodeCampのメインリポジトリから最新の変更 を同期します。 最新の
上流/マスター
の上に、コンフリクトを回避するためにできるだけ頻繁にブランチをリベースにすることが重要です。freeCodeCamp上流リポジトリのローカルコピーを更新してください:
git fetch upstream
フリーCodeCampマスターでマスターブランチをハードリセット:
git reset --hard upstream/master
GitHubのフォークにきれいな履歴を表示するには、あなたのマスターブランチをあなたのオリジンにプッシュしてください。
git push origin master --force
差分を実行することで、現在のマスターが上流/マスターと一致するか確認できます:
git diff upstream/master
結果の出力は空でなければなりません。
-
新しいブランチを作成:
各問題に対して別のブランチで作業することは、ローカルの作業コピーをきれいに保つのに役立ちます。
マスター
で作業するべきではありません。 これはfreeCodeCampのあなたのコピーを土壌にし、あなたは新鮮なクローンやフォークからやり直す必要があるかもしれません。マスター
を、前述のように使用していることを確認し、そこから分岐します。git checkout -b fix/update-guide-for-xyz
ブランチ名は
fix/
、feat/
、docs/
などで始まる必要があります。 ブランチ内で課題番号を使用しないでください。 それらを短く、意味があり、ユニークにしてください。良いブランチ名の例は次のとおりです。
fix/update-challenges-for-react fix/update-guide-for-html-css fix/platform-bug-sign-in-issue feat/add-guide-article-for-javascript translate/add-spanish-basic-html
-
ページを編集し、お気に入りのテキストエディタでコードを作成します。
-
変更に満足したら、必要に応じてfreeCodeCampをローカルで実行して変更をプレビューする必要があります。
-
エラーを修正し、変更の書式を確認してください。
-
アップデートしているファイルを確認してください:
git status
編集した
ステージされていない
ファイルのリストが表示されます。ブランチのfeat/documentation あなたのブランチは 'upstream/feat/documentation' で最新です。 コミットする変更: ("git reset HEAD <file>..." を使用して unstage) modified: CONTRIBUTING.md modified: docs/README.md modified: docs/how-to-setup-freecodecamp-locally.md modified: docs/how-to-work-on-guide-articles.md
-
変更をステージングし、コミットを行います:
このステップでは、自分で編集または追加したファイルのみをマークする必要があります。 必要に応じて変更しようとしなかったファイルをリセットして解決できます。
git add path/to/my/changed/file.ext
または、
ステージされていない
ファイルをすべてステージング領域に追加できます。git add .
ステージング領域に移動されたファイルのみが、コミットを行うときに追加されます。
git status
出力:
ブランチのfeat/documentation あなたのブランチは 'upstream/feat/documentation' で最新です。 to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md modified: docs/README.md modified: docs/how-to-setup-freecodecamp-locally.md modified: docs/how-to-work-on-guide-articles.md ...
これで、次のような短いメッセージで変更をコミットできます。
git commit -m "fix: my short commit message"
いくつかの例:
fix: updating guide article for Java - for loop feat: add guide article for alexa skills
オプション:
従来のコミットメッセージを作成することを強くお勧めします。 これは、人気のあるオープンソースリポジトリで見ることができる良い方法です。 開発者として、これは標準的な慣行に従うことをお勧めします。
従来のコミットメッセージの例は次のとおりです。
fix: update HTML guide article fix: update build scripts for Travis-CI feat: add article for JavaScript histing docs: update continue guidelines
50文字以上ではなく、これらの短い文字を保持してください。 コミットメッセージの説明に追加情報をいつでも追加できます。
これは、'updateファイル' や 'add index.md' のような型破りなメッセージよりも時間がかかりません。
-
コミットを作成した後にファイルを編集したり、コミットメッセージを更新したりする必要があることがわかった場合は、以下のようにファイルを編集できます:
git commit --amend
これにより、
nano
やvi
のようなデフォルトのテキストエディタが開き、コミットメッセージのタイトルを編集し、説明を追加/編集することができます。 -
次に、フォークに変更をプッシュできます:
git push origin branch/name-here
プルリクエストを提案する (PR)
変更をコミットしたら、 Pull Request を開く方法をここで確認してください。
クイックコマンドの参照
ローカルで作業するときに必要なコマンドを簡単に参照します。
(Command) | 説明 |
---|---|
npm ci |
すべての依存関係をインストール/再インストールし、異なるサービスをブートストラップします。 |
npm run seed |
すべてのチャレンジマークダウンファイルを解析し、MongoDBに挿入します。 |
npm run develop |
freeCodeCamp APIサーバーとクライアントアプリケーションを起動します。 |
npm test |
クライアント、サーバー、lint、チャレンジテストなど、システム内のすべてのJSテストを実行します。 |
npm run test:client |
クライアントテストスイートを実行します。 |
npm run test:カリキュラムの |
カリキュラムテストスイートを実行します。 |
npm run test:カリキュラム--block='Basic HTML and HTML5' |
特定のブロックをテストする |
npm run test:カリキュラム--superblock='responsive-web-design' |
特定の SuperBlock をテストします。 |
npm run test-curriculum-full-output |
最初のエラーが発生した後、保留せずにカリキュラムテストスイートを実行します |
npm run test:server |
サーバーテストスイートを実行します。 |
npm run e2e |
サイプレスエンドを実行してテストを終了します。 |
npm run clean |
すべての依存関係をアンインストールし、キャッシュをクリーンアップします。 |
トラブルシューティング
推奨される前提条件をインストールする際の問題
macOS 10.15以降、Ubuntu 18.04以降、Windows 10(WSL2)などの最新または最も人気のあるオペレーティングシステムを定期的に開発しています。
Google、Stack Overflow、Stack Exchangeなどのリソースに関する特定の問題を調査することをお勧めします。 誰かが同じ問題に直面し、あなたの特定のクエリに対する答えがすでにある可能性があります。
別の OS をお使いの場合や問題が解決しない場合は、 ヘルプ を参照してください。
[!警告]
前提条件の問題のためにGitHubの問題を作成しないでください。 彼らはこのプロジェクトの範囲外です。
UI、フォント、ビルドエラーなどに関する問題。
UIで問題が発生した場合、フォントやビルドエラーが表示された場合、クリーンアップが便利です。
npm run clean
npm ci
npm run seed
npm run develop
OR
ショートカットを使用
npm run clean-and-develop
ビルドで問題に直面し続ける場合は、ワークスペースのクリーンアップをお勧めします。
連動モードで git clean
を使用します:
git clean -ifdX
追跡されていないファイルを消去する方法(スクリーンショット)

APIに関する問題 ログイン、チャレンジ提出など
ログインできない場合は、代わりにfreeCodeCampに報告されるというエラーメッセージが表示されます。 ローカルポート 3000
が別のプログラムで使用されていないことを再確認してください。
Windows 上の Linux / macOS / WSL - 端末から:
netstat -ab | grep "3000"
tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN
Windows上 - 高度なPowerShellから:
netstat -ab | Select-String "3000"
TCP 0.0.0.0:3000 DESKTOP LISTENING
依存関係のインストール中の問題
依存関係のインストール中にエラーが発生した場合。 ネットワークが制限されていないかファイアウォールの設定でリソースへのアクセスが妨げられないことを確認してください。
最初のセットアップには、ネットワーク帯域幅に応じて時間がかかることがあります。 それでも立ち往生している場合は、オフラインの設定ではなくGitPodを使用することをお勧めします。
ヘルプを見る
あなたが立ち往生していると助けが必要な場合 フォーラム の 「コントリビューター」カテゴリまたはGitterの コントリビューターチャットルーム でお知らせください。
ブラウザのコンソールにエラーが発生したり、問題を特定するのに役立つBash / Terminal / Command Lineでエラーが発生する可能性があります。 問題の説明にこのエラーメッセージを入力すると、他の人が問題をより簡単に特定し、解決策を見つけることができます。