
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
@mapnik/mapnik
Advanced tools
Render a map from a stylesheet:
const fs = require('node:fs');
const mapnik = require('@mapnik/mapnik');
// register fonts and datasource plugins
mapnik.register_default_fonts();
mapnik.register_default_input_plugins();
var map = new mapnik.Map(256, 256);
map.load('./test/stylesheet.xml', function(err,map) {
if (err) throw err;
map.zoomAll();
var im = new mapnik.Image(256, 256);
map.render(im, function(err,im) {
if (err) throw err;
im.encode('png', function(err,buffer) {
if (err) throw err;
fs.writeFile('map.png',buffer, function(err) {
if (err) throw err;
console.log('saved map image to map.png');
});
});
});
});
Convert a jpeg image to a png:
var mapnik = require('@mapnik/mapnik');
new mapnik.Image.open('input.jpg').save('output.png');
Convert a shapefile to GeoJSON:
const fs = require('node:fs');
const path = require('node:path');
const mapnik = require('@mapnik/mapnik');
mapnik.register_datasource(path.join(mapnik.settings.paths.input_plugins,'shape.input'));
var ds = new mapnik.Datasource({type:'shape',file:'test/data/world_merc.shp'});
var featureset = ds.featureset()
var geojson = {
"type": "FeatureCollection",
"features": [
]
}
var feat = featureset.next();
while (feat) {
geojson.features.push(JSON.parse(feat.toJSON()));
feat = featureset.next();
}
fs.writeFileSync("output.geojson",JSON.stringify(geojson,null,2));
For more sample code see the tests and sample code.
Starting from v4.6.0, node-mapnik module is published as "universal" binaries on GitHub NPM registry and npmjs using node-addon-api,
node-gyp-build and prebuildify
Currently supported platforms are
linux-x64linux-arm64 (from v4.6.5)darwin-x64darwin-arm64Consult N-API documentation for more details: https://nodejs.org/dist/latest/docs/api/n-api.html#n_api_node_api_version_matrix
npm install @mapnik/mapnik
Note: If using GitHub NPM registry consult "Installing a package ". You will need to authenticate to GitHub Packages, see "Authenticating to GitHub Packages."
.npmrc, create a new .npmrc file if one doesn't exist.@mapnik:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=XXXXXXXXXXXXXXXXXXXXXXXXX
Note: This will install the latest node-mapnik 4.6.x series, which is recommended.
On macOS and Linux:
Ensure mapnik-config program is available and on your ${PATH}.
npm install --build-from-source
To "prebuild" binaries npm run prebuildify
SSE support is enabled by default on x86_64.
To require node-mapnik as a dependency of another package put in your package.json:
"dependencies" : { "@mapnik/mapnik":"*" } // replace * with a given semver version string
To run the tests do:
npm test
BSD, see LICENSE.txt
FAQs
Node.js bindings for Mapnik (mapnik.org)
We found that @mapnik/mapnik demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.