node package manager



An NPM module for outputting your connect-assets javascript assets. Useful for working with requireJS.

Problems This Helps With

  • You're using requireJS and need to update the location of your modules after they have become minified and hashed.
  • You're using requireJS and need to get the url of a particular file to add as the data-main attribute of your script reference.


npm install connect-assets-jspaths

  • Note, there is a dependency on CoffeeScript.

Server Side Usage

assets = require "connect-assets"
jsPaths = require "connect-assets-jspaths"

# Snip ...

app.use assets()
# Exports the global function exportPaths() and jsUrl(); see below in View Helpers.
jsPaths assets

# Optionally, pass a log function to see progress
# jsPaths assets, console.log

Watch changes and re-compile

Now you can pass some additional callbacks in and it will monitor your connect assets directories for changes.

fileChangedCallback = (err, filePath) ->
    console.log "File Changed: #{filePath}"

jsPaths assets, console.log, fileChangedCallback, (err, watcher) ->
    console.log "Watcher initialized"

NOTE You'll probably want to disable this for production mode.

View Usage

This module exports two global functions exportPaths() and jsUrl().

// Using this in your view
!= exportPaths("jsPaths")

// Turns into this when rendered in production
<script type="text/javascript">
    var jsPaths = { "main", "/builtAssets/js/main.13819282742.js" /* snip all the other file paths */ };

// Using this in your view
- var mainJsPath = jsUrl("/js/main.js")
script(type="text/javascript", data-main="#{mainJsPath}", src="//")    

// Turns into this when rendered in production
<script type="text/javascript" data-main="/builtAssets/js/main.13819282742.js" src="//"></script>

Dynamic RequireJS Paths

Now that we have a variable with our requireJS friendly paths in it, we can set those paths in the RequireJS config

# Example file in /assets/js folder

requirePaths =
    jquery: "//"
    underscore: "//"
    backbone: "//"
    text: "/js/lib/text"
    handlebars: "/js/lib/handlebars"
if jsPaths
  for own key, value of jsPaths
    # Fix up the lib references
    key = key.slice 4 if key.slice(0, 4) == "lib/"
    requirePaths.paths[key] = value 

  paths: requirePaths.paths

      exports: "$"
      exports: "_"
      deps: ["underscore", "jquery"]
      exports: "Backbone"
require ['app'], (App) ->
    new App().initialize()


Created by Jacob Gable. MIT License; no attribution required.