Emerald - Ethereum Classic Wallet
Development instructions
The supported version of node
is v6
. If you run into build errors, please make sure that you are using NodeV6 by running node --version
.
package.json
: This is where scripts that get run when you use npm run blah
get defined.
It’ll be helpful to have an idea of what’s available and where the magic npm run
commands
are coming from. You can run any of those commands without the npm run
meta-command.
Dependencies
NPM packages
This will install dependencies saved in package.json
under the devDependencies
field.
You’re going to need these.
$ npm install
If you wind up installing more packages, please
- be sure that they’re really important — we’d like to avoid a pile of "convenience"
packages; every required package adds complexity.
- use npm install totally-awesome-and-important
along with --save
or --save-dev
.
That way everyone else will be able to reproduce your totally-awesomely-improved
setup.
Emerald and geth
Emerald
If you haven’t got emerald
already installed on your system, you can execute ./dependencies.sh
to automatically rustup
and use cargo
to install emerald-cli
and move it to the
project’s base dir. Note: this command is idempotent for rust and cargo (it won’t
try to install cargo if you’ve already got it), but it will
use cargo’s -f
flag to force install emerald-cli
and copy that version to the
project directory.
Geth
If geth isn’t available in your project directory, upon launching the app, it automatically be downloaded and placed in your project base dir.
Run for development
Firstly: a couple things aren’t working right. If you can fix either of these issues, @whilei will buy you a beer.
-
Issue 1:
webpack-dev-server
isn’t working right with the current babel-webpack-electron-izing setup. So you’ve got to do your development in Electron for now. Which means you can’t runnpm run start:web
. Bummer.
With these caveats in mind, you can run:
Terminal 1
# This will begin a live-watching compiler for ./src/ and ./electron/ folders
$ npm run build:all
Terminal 2
# This will begin the simulated electron app pulling from those compiled sources.
$ npm run start:electron
Logs
Electron and Emerald logs
During development, Electron and Emerald logs are in your Terminal 2 console, they’re also persisted in ~/Library/Logs/EmeraldWallet/log.log. This is the same for production.
Geth logs
During development, you’ll find geth’s logs in ./logs
right in the project base directory.
In production, logs will be nestled in ~/Library/Application Support/EmeraldWallet/
.
Building alternatively
You can also use a variety of alternate build options, eg.
$ npm run build:all:nowatch
$ npm run build:web
Building distributions in development
You can run a distribution build in your development environment. Assuming
you’ve already compiled ./src/
and ./electron/
, you’ll be able to run:
$ npm run dist
This command will build for your current system. Note that there are configurations for
several systems (OSX, Linux, Windows) specified in the "build"
field of package.json
, but the dist
command will by default only build for the system it’s on.
Note: If you’re developing on OSX and have a developer signing identity on your machine, you can
optionally disable that with CSC_IDENTITY_AUTO_DISCOVERY=false
.
OSX is also able to build for Linux. Add -ml
to that raw command to build for
both OSX and Linux at the same time.
Troubleshooting
Some preliminary things to try in case you run into issues:
-
Clear out any persisted settings or userdata from previous trials
-
OSX:
~/Library/Application Support/EmeraldWallet
-
Linux:
~/.config/EmeraldWallet
-
Windows:
%APPDATA%\EmeraldWallet
-
Run tests
npm run test:watch
or for single run:
npm test
Parity
./parity --chain=classic
Use --rpccorsdomain
option to configure CORS.
Example: ./parity --chain=classic --rpccorsdomain=*
allow requests from any domain
License
Apache 2.0