Skip to content

janv/sprockets-browserify

Repository files navigation

Serve npm (CommonJS) modules through Sprockets with the help of Browserify.

Node.js, obviously. This gem calls node directly, no ExecJS involved.

Add this to your Gemfile:

gem 'sprockets-browserify'

Place a CommonJS Module in your assets directory and perform a npm install:

/app/assets/javascript/foo
  - index.js
  - package.json
  - node_modules/
    - ...

Require the module within your application.js or somewhere else:

//
//= require foo/index
//

Done.

Your node module should fulfill the following requirements:

  • The main file for the module must reside in the same directory as the package.json, in the root of the module

  • The main file should expose its API in some way to the browser environment, by setting propertes on window or sth. like that

If you want to use a module that doesn’t conform, consider creating a wrapper module in you assets directory that requires the module you actually want to use:

foo_wrapper/package.json:

...
"dependencies": {
  "foo": ...
},
...

foo_wrapper/index.js:

window.Foo = require('foo');

foo_wrapper/node_modules/foo/index.js:

module.exports = "Foo";

By default, the asset pipeline in Rails precompiles every file with a .js extension. This is probably not what you want if you have a bunch of modules in the node_modules directory. Disable this behavior by specifically listing only individual files you want to precompile:

config.assets.precompile = ['main.js', 'stylesheet.css']

instead of merely appending to

config.assets.precompile << 'main.js'

Released under the MIT License. See the MIT-LICENSE file for further details.

About

Serve npm (CommonJS) modules through Sprockets with the help of Browserify.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •