Skip to content

Latest commit

 

History

History
72 lines (49 loc) · 2.71 KB

README.md

File metadata and controls

72 lines (49 loc) · 2.71 KB

Introduction

The js/ folder contains:

  • index.php - a servlet described below
  • piwik.js - the uncompressed piwik.js source for you to study or reference
  • README.md - this documentation file

Why Use "js/index.php"?

  • js/index.php (or implicitly as "js/") can be used to serve up the minified piwik.js

    • it supports conditional-GET and Last-Modified, so piwik.js can be cached by the browser
    • it supports deflate/gzip compression if your web server (e.g., Apache without mod_deflate or mod_gzip), shrinking the data transfer to 8K
  • js/index.php (or implicitly as "js/") can also act as a proxy to matomo.php

  • If you are concerned about the impact of browser-based privacy filters which attempt to block tracking, you can change your tracking code to use "js/" instead of "piwik.js" and "matomo.php", respectively.

    Note that in order for Page Overlay to work, the Piwik tracker method setAPIUrl() needs to be called with its parameter pointing to the root directory of Piwik. E.g.:

    _paq.push(['setAPIUrl', u]);

Deployment

To minify core JavaScript you may run the following command (with Development Mode enabled):

$ ./console development:build-tracker-js

(Note: this command can also be used to minify plugin tracker JavaScript.)

To manually minify the file:

  • piwik.js is minified using YUICompressor 2.4.8. To install YUICompressor run:

    $ cd /path/to/piwik/js/
    $ wget https://github.com/yui/yuicompressor/releases/download/v2.4.8/yuicompressor-2.4.8.zip
    $ unzip yuicompressor-2.4.8.zip

    To compress the code containing the evil "eval", run:

    $ cd /path/to/piwik/js/
    $ sed '/<DEBUG>/,/<\/DEBUG>/d' < piwik.js | sed 's/eval/replacedEvilString/' | java -jar yuicompressor-2.4.8.jar --type js --line-break 1000 | sed 's/replacedEvilString/eval/' | sed 's/^[/][*]/\/*!/' > piwik.min.js && cp piwik.min.js ../piwik.js && cp piwik.min.js ../matomo.js

    This will generate the minify /path/to/piwik/js/piwik.min.js and copy it to /path/to/piwik/piwik.js. Both "js/piwik.min.js" and "piwik.js" need to be committed.

    We recommend to execute this command under Linux. It has not been tested with Windows and MacOS might add a trailing newline which fails tests. VisitorGeolocatorTest

  • In a production environment, the tests/javascript folder is not used and can be removed (if present).

  • We use /*! to include Piwik's license header in the minified source. Read Stallman's "The JavaScript Trap" for more information.

  • Information about the current version number you have installed can be found under What version of Piwik do I have?.