• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    CoffeeScript
  • Created about 13 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sprockets-style script concatenation for Node

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

More Repositories

1

c-generic-ring-buffer

Just a dead simple set of c macros for working with ring buffers in a generic manner.
C
74
star
2

sentiment

sentiment analysis for twitter
Python
51
star
3

kckr

Kicker, but not broken, and written for node.js
CoffeeScript
28
star
4

coffee-plate

jQuery plugin boilerplate written in coffee script.
CoffeeScript
21
star
5

minimatch-test

Quickly prototype / test node-minimatch globs
CoffeeScript
10
star
6

cli-scrape

Do simple scraping from the command line using XPath or CSS Selectors!
CoffeeScript
9
star
7

conqueterm-vim

mirror that has all the py files, etc in it.
Python
9
star
8

twitter-python-talk

JavaScript
7
star
9

Vico

My vicoapp site.nu file
Nu
6
star
10

js-master-class

A punch list of learning resources for grokking the "high points" of JavaScript
2
star
11

fido

multi-threaded bitmap server written in C
C
2
star
12

webapp-bootstrap

Just some boilerplate for a django app using html5 boilerplate, twitter bootstrap, coffeescript, and less.
Python
2
star
13

jQuery.backgroundSlider

for teh winz
CoffeeScript
2
star
14

thrash

my dotfiles
Vim Script
1
star
15

vim

personal mirror of vim's hg repo
C
1
star
16

swapi-react-tutorial

JavaScript
1
star
17

ng-boot

I made this to be like... a "local" (and therefore more debuggable) jsfiddle for angular.
CoffeeScript
1
star
18

sp

Catch files trying to run off with ur gigs...
Python
1
star
19

hckr-chat

new chat app for hckr's. a side project between a friend and I. don't expect too much for now.
CoffeeScript
1
star
20

bare-dotfiles

The bare minimum dotfiles I need on a remote server to get by.
Vim Script
1
star
21

pthrasher.github.com

my site
Ruby
1
star
22

gImage

super simple python module -- searches google images, outputs first result.
Python
1
star
23

twittergeo

JavaScript
1
star
24

node-split-spawn

Split a terminal window up into multiple parallel commands
JavaScript
1
star
25

overscore

Underscore.js templates compiled on the server-side.
CoffeeScript
1
star
26

eslint-plugin-whatwg-fetch

JavaScript
1
star