The Firebase JavaScript SDK implements the client-side libraries used by applications using Firebase services. This SDK is distributed via:
- CDN (
<script src="https://www.gstatic.com/firebasejs/4.0.0/firebase.js"></script>
) - npm package
- Bower package
To get started using Firebase, see Add Firebase to your JavaScript Project.
Before you can start working on the Firebase JS SDK, you need to have Node.js 6.0 or greater installed on your machine. After doing this, you must also install the dependencies for this package.
To download Node.js visit https://nodejs.org/en/download/.
Once you've verified that you are using version 6.0 or later (run node -v
to see your
current running version of Node.js), you can install the dependencies by running:
$ npm install
NOTE: This package also maintains a yarn.lock
so you can get faster installs by installing
dependencies with yarn
instead.
The Firebase JS SDK is built and tested through a gulp pipeline. You will need to
have the gulp
command available on your system to run the tasks yourself.
To install gulp
simply run:
$ npm install -g gulp-cli
NOTE: Installing gulp-cli
is optional as you can simply leverage the npm commands
for most interactions.
Most of the tasks for interacting with the SDK are defined through gulp. If you installed gulp globally, you can run the following to see all of the available gulp tasks:
gulp --tasks
To run all tests for the SDK you must first supply a firebase project config for
your tests. This is done by creating a file called project.json
and at the
following path:
tests/config/project.json
This file should contain a JSON object with your app information (i.e. the same
information you would pass to firebase.initializeApp
).
After you have done this, simply run: npm test
at the root of this package.
There are several types of available tests:
- Unit Tests (
gulp test:unit
) - Integration Tests (
gulp test:integration
)
NOTE: You can execute each of these tasks on their own (e.g. you can run
gulp test:unit
to run exclusively the smoke tests from your CLI)
The Javascript SDK is built through a gulp pipeline.
To build the project run npm run build
in your CLI.
This will generate all of the output assets in a /dist
folder available at the
root of this project.
Each of the different types of source files are explained more in detail below.
Our source files are all located in the /src
directory. This currently contains
a variety of different sources (typescript, prebuilt binaries, legacy). We handle
each of these cases in our gulp pipeline.
This is the planned source language for this repo. As we are able, all components will be migrated to typescript and processed in the following flow:
- TS Files are compiled to ES6 using the Typescript compiler
- ES6 Files are transpiled to CJS Modules using Babel
- ES6 Files are processed with webpack to attach to the window global
To allow firebase to build from Github we consume prebuilt binaries of our components until the source is migrated to this repo.
These files are processed in the following flow:
- Prebuilt browser binaries are ready to consume individually in the browser however we need to wrap them in a CJS module wrapper for node/webpack/browserify consumption.
- The Firebase App binary is generated (from TS) and concatenated with the
browser binaries of each individual module to create
firebase.js
.
These files are built in this repo but are being migrated to typescript as we are able. Once these files are migrated, the associated build process, will be removed.
See Contributing for more information on contributing to the Firebase JavaScript SDK.