Skip to content
This repository

A modern map design studio.

Octocat-spinner-32 _posts Eliminate syncAPI option. March 03, 2014
Octocat-spinner-32 assets bundle showdown since node-markdown is deprecated February 19, 2014
Octocat-spinner-32 commands Be ok with 204. March 03, 2014
Octocat-spinner-32 controllers Non-blocking update checking on client startup June 28, 2012
Octocat-spinner-32 data Selectively copy sample data file to MapBox/cache dir. Refs #1114. January 16, 2012
Octocat-spinner-32 examples update ancient example comments, fixes #1964 August 30, 2013
Octocat-spinner-32 lib Eliminate syncAPI option. March 03, 2014
Octocat-spinner-32 models Revert "travis is now running latest node v0.10.x so remove nvm hack" February 10, 2014
Octocat-spinner-32 platforms fix generation of settings on windows - closes #2273 April 16, 2014
Octocat-spinner-32 plugins Add semicolon November 09, 2012
Octocat-spinner-32 servers bundle showdown since node-markdown is deprecated February 19, 2014
Octocat-spinner-32 templates Merge pull request #1908 from stevage/subquery-text April 09, 2014
Octocat-spinner-32 test stderr from postgis appears valid on linux March 18, 2014
Octocat-spinner-32 views fix format dropdown/custom input behavior - accidentally switched in 9… February 19, 2014
Octocat-spinner-32 .gitignore DIRTY October 01, 2012
Octocat-spinner-32 .travis.yml use node-mapnik@1.4.1 and test binaries April 01, 2014
Octocat-spinner-32 update copyright to MapBox December 04, 2013
Octocat-spinner-32 https April 16, 2014
Octocat-spinner-32 configure.js add protobuf/pkg-config to configure script October 04, 2013
Octocat-spinner-32 index.js disable in memory quadtrees for openfilegdb for now since they appear… April 15, 2014
Octocat-spinner-32 package.json move optional deps up April 15, 2014
Octocat-spinner-32 use npm rebuild rather than direct node-gyp call to avoid sqlite3 bre… October 25, 2013
Octocat-spinner-32 tilemill.ico move tilemill.ico to root and add log-file option for cefclient February 13, 2012

TileMill is a modern map design studio powered by Node.js and Mapnik.

Installation instructions, development docs and other information are available on the TileMill website.

Build Status

Build Status Dependencies

Key modules

  • mapnik - Build Status
  • node-mapnik - Build Status
  • carto - Build Status
  • tilelive.js - Build Status
  • tilelive-mapnik - Build Status
  • millstone - Build Status
  • node-mbtiles - Build Status
  • node-sqlite3 - Build Status


  • Mapnik v2.3.0
  • Node.js v0.10.x or v0.8.x
  • Protobuf: libprotobuf-lite and protoc

For details follow:

Running tests

Install mocha and run the tests

npm install mocha
npm test

Note: the tests require a running postgres server and a postgis enabled database called template_postgis.

If you do not have a template_postgis create one like:

createdb -E UTF8 template_postgis
psql -c "CREATE EXTENSION postgis" template_postgis

If you experience failing tests here are two tips:

  1. Debug the project data by running TileMill with

    ./index.js --files=./test/fixtures/files/

  2. Try clearing the cache of test data:

    rm -rf ./test/fixtures/files/

For more info see:


TileMill documentation is kept in the mb-pages branch, which is independently managed and not merged with master.

TileMill's in-app reference available as the "Manual" (see below for syncing details) is a very small subset of docs for offline usage and is manually sync'ed from the mb-pages branch.

To view all the TileMill documentation locally, first checkout the mb-pages branch:

git checkout mb-pages

Then install Jekyll:

sudo gem install jekyll

And run Jekyll:


Once Jekyll has started you should be able to view the docs in a browser at:


Syncing manual

To sync the manual with mb-pages updates do:

cd ../
git clone --depth=1 -b mb-pages tilemill-mb-pages
export TILEMILL_GHPAGES=../tilemill-mb-pages
rm -rf ${TILEMILL_SOURCES}/assets/manual
mkdir -p ${TILEMILL_SOURCES}/assets/manual
cp -r ${TILEMILL_GHPAGES}/assets/manual/* ${TILEMILL_SOURCES}/assets/manual/
git add ${TILEMILL_SOURCES}/assets/manual/*
rm -rf ${TILEMILL_SOURCES}/_posts/docs/reference
mkdir -p ${TILEMILL_SOURCES}/_posts/docs/reference
cp -r ${TILEMILL_GHPAGES}/_posts/docs/reference/* ${TILEMILL_SOURCES}/_posts/docs/reference/
git add ${TILEMILL_SOURCES}/_posts/docs/reference/*
Something went wrong with that request. Please try again.