Easily share data between modules meant to run on the server and client using browserify.

npm install sharify
6 downloads in the last day
19 downloads in the last week
78 downloads in the last month


Easily share data between Browserify modules meant to run on the server and client.


The following example shares a Backbone Model between the server and browser. However, this could be applied to any module shared server/client.

Inject some constant data on the server and mount sharify

var sharify = require('sharify'); = {
  API_URL: '',
  NODE_ENV: process.env.NODE_ENV

Use in a module that can run on the server or client

var Backbone = require('backbone'),
    API_URL = require('sharify').data.API_URL;

var Artwork = module.exports = Backbone.Model.extend({
  urlRoot: API_URL + '/artwork/'

Inject sharify script in the view

    if == 'development'
      //- Make sure this is above your other scripts
      != sharify.script()
      script( src='/bundle.js' )

Use the shared module server/client

// server.js
var Artwork = require('../models/artwork');

app.get('/artwork/:id', function(req, res) {
  new Artwork({ id: }).fetch(//...);
// client.js
var Artwork = require('../models/artwork'),
    View = require('view.js');

new View({ model: new Artwork() });

Bootstrapping Request-level Data to the Client

You can use sharify to bootstrap dynamic data as well.

Inject data into the local

var Artwork = require('../models/artwork');

app.get('artwork/:id', function(req, res, next) {
  new Artwork({ id: }).fetch({
    success: function(artwork) { = artwork.toJSON();

Require the data on the client

var Artwork = require('../models/artwork'),
    ARTWORK_JSON = require('sharify').data.ARTWORK_JSON,
    View = require('view.js');

new View({ model: new Artwork(ARTWORK_JSON) });


Please fork the project and submit a pull request with tests. Install node modules npm install and run tests with make test.



npm loves you