Need help with snockets?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

pthrasher
122 Stars 39 Forks 63 Commits 12 Opened issues

Description

Sprockets-style script concatenation for Node

Services available

!
?

Need anything else?

Contributors list

# 115,115
ESLint
forestr...
hugo
Webpack
32 commits
# 123,894
Shell
HTML
CSS
React
16 commits
# 186,257
json-fo...
html5
CSS
preproc...
2 commits
# 300,414
CSS
HTML
rabbitm...
service...
1 commit
# 260,081
CSS
backbon...
api-res...
React
1 commit

Snockets

Build Status

A JavaScript/CoffeeScript concatenation tool for Node.js inspired by Sprockets. Used by connect-assets to create a Rails 3.1-style asset pipeline.

Written in CoffeeScript by the author of CoffeeScript: Accelerated JavaScript Development.

The state of the package

As of May 1st, 2013, @pthrasher became the maintainer of this package. It was taken over from @TrevorBurnham. I'm currently working on a 2.0.0 release that will be complete by the end of May. Main changes/features:

  • Source-map support
  • Move tests from node-unit over to jasmine.
  • Break out pieces into separate files.
  • More tests
  • More documentation

You can track my progress on these tasks via Pull Request #43

Usage (script-side)

In your CoffeeScript files, write Sprockets-style comments to indicate dependencies, e.g.

#= require dependency

(or

//= require dependency
in JavaScript). If you want to bring in a whole folder of scripts, use
#= require_tree dir

Usage (Node-side)

First,

npm install snockets

Then in your app:

Snockets = require 'snockets'
snockets = new Snockets()

Each

Snockets
instance has a
depGraph
property, an instance of dep-graph. You can
scan
a file to just update the dependency graph:
snockets.scan 'dir/foo.coffee', (err, depGraph) -> ...

To get a list of filenames showing the series of dependencies the scanned file has, you'd use

depGraph.getChain 'dir/foo.coffee'
.

You can get a list of compiled JavaScripts corresponding to the dependency chain (starting from the first required file to the requested file) using

getCompiledChain
:
snockets.getCompiledChain 'dir/foo.coffee', (err, jsList) -> ...

The result is in the format

[{filename: "dependency1.js", js: "// code"}, ...]
. Note that those JavaScript files are not actually created by
getCompiledChain
.

Snockets can also provide a single compiled, concatenated file (optionally run through UglifyJS if the

minify
option is passed in):
snockets.getConcatenation 'dir/foo.coffee', minify: true, (err, js) -> ...

Note that you don't need to

scan
before or after running
getCompiledChain
or
getConcatenation
; they update the dependency graph the same way that
scan
does.

Synchronous mode

By default, Snockets uses only async file methods. You can pass the option

async: false
to either of its methods if you want it to be synchronous instead. In synchronous mode, you can use either callbacks or return values, e.g.
js = snockets.getConcatenation 'dir/foo.coffee', async: false

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.