Ophan Tracker JS
$ npm install ophan-tracker-js
$ brew install lighttpd .../ophan/tracker-js $ npm install
In one terminal window:
.../ophan/tracker-js $ grunt .../ophan/tracker-js $ grunt watch
In another terminal window:
.../ophan/tracker-js $ lighttpd -f lighttpd.conf -D
Install FoxyProxy (https://getfoxyproxy.org/downloads/) in your browser and create a rule that forces j.ophan.co.uk to localhost 8000. (For me FoxyProxy needed a few switches on and off before it decided to start talking to lighttpd.)
In another terminal window, start a server that is running the Guardian frontend
Navigate to where you are running the Guardian locally (e.g. https://localhost:9000/uk)
Ensure FoxyProxy is enabled
Develop with pleasure
Two formats for release
When you make a change to Tracker JS, you must release on both these systems:
- The NPM package
ophan-tracker-js, commonly used on internally developed Guardian sites like Guardian Frontend and Support Frontend.
- https://j.ophan.co.uk/ - CDN/S3, deployed through RiffRaff and used by some Guardian sites like https://jobs.theguardian.com/. An advantage of this approach is that sites using it immediately get Tracker JS updates, without developer intervention.
Ensure that before you merge a change, you first bump the version in
package.json. Please make sure you update the changes.md file too. If you have added a new Ophan client to support a new platform, please add the path to the built output file to the files list in
Publish to NPM
Whenever the Tracker script is changed, its
ophan-tracker-js NPM package will
need to be updated to a new version.
If you don't already have an NPM account, be sure to set up two-factor authentification.
Log into NPM
$ npm login
.../ophan/tracker-js $ npm install
.../ophan/tracker-js $ npm publish
You will need to be added as an owner of
ophan-tracker-js. To find the current owners:
$ npm owner ls ophan-tracker-js
To add someone as an owner:
npm owner add npm.username ophan-tracker-js
More information on setting owners is available in NPM's documentation.