48c02ef641
Validation has been added to the build script when the "prod" target is selected. We now ensure that all expected environment variables are set, and that no extra environment variables are present (which might indicate that the wrong configuration file is being used). The `prod` target uses a new `.metamaskprodrc` configuration file. Each required variable can be specified either via environment variable or via this config file. CI will continue set these via environment variable, but for local manual builds we can use the config file to simplify the build process and ensure consistency. A new "dist" target has been added to preserve the ability to build a "production-like" build without this validation. The config validation is invoked early in the script, in the CLI argument parsing step, so that it would fail more quickly. Otherwise we'd have to wait a few minutes longer for the validation to run. This required some refactoring, moving functions to the utility module and moving the config to a dedicated module. Additionally, support has been added for all environment variables to be set via the config file. Previously the values `PUBNUB_PUB_KEY`, `PUBNUB_SUB_KEY`, `SENTRY_DSN`, and `SWAPS_USE_DEV_APIS` could only be set via environment variable. Now, all of these variables can be set either way. Closes #15003 |
||
---|---|---|
.. | ||
build | ||
charts | ||
highlights | ||
lib | ||
states | ||
ts-migration-dashboard | ||
announcer.js | ||
chromereload.js | ||
create-static-server.js | ||
empty.js | ||
generate-lavamoat-policies.js | ||
generate-migration.sh | ||
gource-viz.sh | ||
jest.config.js | ||
metamaskbot-build-announce.js | ||
missing-locale-strings.js | ||
mock-3box.js | ||
mock-segment.js | ||
README.md | ||
run-ganache.sh | ||
sentry-publish.js | ||
sentry-upload-artifacts.sh | ||
shellcheck.sh | ||
show-deps-install-scripts.js | ||
source-map-explorer.sh | ||
sourcemap-validator.js | ||
static-server.js | ||
stream-flat-map.js | ||
verify-locale-strings.js |
Development
Several files which are needed for developing on MetaMask.
Usually each file or directory contains information about its scope / usage.
Segment
Debugging with the Mock Segment API
To start the Mock Segment API:
- Add/replace the
SEGMENT_HOST
andSEGMENT_WRITE_KEY
variables in.metamaskrc
SEGMENT_HOST='http://localhost:9090' SEGMENT_WRITE_KEY='FAKE'
- Build the project to the
./dist/
folder withyarn dist
- Run the Mock Segment API from the command line
node development/mock-segment.js
Events triggered whilst using the extension will be logged to the console of the Mock Segment API.
More information on the API and its usage can be found here.
Debugging in Segment
To debug in a production Segment environment:
- Create a free account on Segment
- Create a New Workspace
- Add a Source (Node.js)
- Copy the
Write Key
from the API Keys section under Settings - Add/replace the
SEGMENT_HOST
andSEGMENT_WRITE_KEY
variables in.metamaskrc
SEGMENT_HOST='https://api.segment.io' SEGMENT_WRITE_KEY='COPIED_WRITE_KEY'
- Build the project to the
./dist/
folder withyarn dist
Events triggered whilst using the extension will be displayed in Segment's Debugger.
Debugging Segment requests in MetaMask
To opt in to MetaMetrics;
- Unlock the extension
- Open the Account menu
- Click the
Settings
menu item - Click the
Security & Privacy
menu item - Toggle the
Participate in MetaMetrics
menu option to theON
position
You can inspect the requests in the Network
tab of your browser's Developer Tools (background.html)
by filtering for POST
requests to /v1/batch
. The full url will be http://localhost:9090/v1/batch
or https://api.segment.io/v1/batch
respectively.
Sentry
Debugging in Sentry
To debug in a production Sentry environment:
- If you have not already got a Sentry account, you can create a free account on Sentry
- Create a New Sentry Organization
- If you already have an existing Sentry account and workspace, open the sidebar drop down menu, then click
Switch organization
followed byCreate a new organization
- If you already have an existing Sentry account and workspace, open the sidebar drop down menu, then click
- Create a New Project
- Copy the
Public Key
andProject ID
from the Client Keys section under your projects Settings- Select
Settings
in the sidebar menu, then selectProjects
in the secondary menu. Click your project then selectClient Keys (DSN)
from the secondary menu. Click theConfigure
button on theClient Keys
page and copy yourProject Id
andPublic Key
- Select
- Add/replace the
SENTRY_DSN
andSENTRY_DSN_DEV
variables in.metamaskrc
SENTRY_DSN_DEV=https://{SENTRY_PUBLIC_KEY}@sentry.io/{SENTRY_PROJECT_ID} SENTRY_DSN=https://{SENTRY_PUBLIC_KEY}@sentry.io/{SENTRY_PROJECT_ID}
- Build the project to the
./dist/
folder withyarn dist
Errors reported whilst using the extension will be displayed in Sentry's Issues
page.