Skip to content

Instantly share code, notes, and snippets.

@525c1e21-bd67-4735-ac99-b4b0e5262290
Created September 4, 2012 21:09
Show Gist options
  • Save 525c1e21-bd67-4735-ac99-b4b0e5262290/3626521 to your computer and use it in GitHub Desktop.
Save 525c1e21-bd67-4735-ac99-b4b0e5262290/3626521 to your computer and use it in GitHub Desktop.
node.js autoloader
module.exports = (subject = module.parent) ->
console.log 'globalist', subject.id
(require 'pkginfo') subject
{dependencies} = subject.exports
for dependency, version of dependencies then do (dependency, version) ->
console.log 'globalising', dependency
Object.defineProperty global, dependency, configurable: yes, get: ->
console.log 'loading', dependency
requiredModule = subject.require dependency
Object.defineProperty global, dependency, value: requiredModule
return requiredModule
return (key) ->
requiredModule = subject.require "./lib/#{key}"
global[requiredModule.name] = requiredModule
{
"name": "mason",
"version": "0.1.0",
"main": "./mason",
"dependencies": {
"globalist": "*",
"feisty": "*",
"expresser": "~3",
"browserify": "*",
"fileify": "*",
"socket.io": "*",
"socket.io-client": "*"
}
}
globalist = do require './globalist'
globalist 'server'
app = expresser()
app.configure =>
bundle = browserify
entry: './entry.coffee'
debug: on
ignore: ['shaders', 'redis', 'hiredis']
# filter: require 'uglify-js'
# require: []
bundle.use fileify 'shaders', "#{__dirname}/shaders"
app.use bundle
server = app.listen 80
io = global['socket.io'].listen server, 'log level': 2, transports: ['websocket']
node = new Server io: io
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment