NPM support for Rails projects. It let you use Bundler-like DSL and rake tasks for including npm packages. This gem based on Browserify for bundling packages and resolve dependencies.
Add this line to your application's Gemfile:
gem 'npm-rails'Then run:
rails g npm_rails:initialize
And require npm-dependencies.js:
//=require npm-dependencies
- Add a package to
npm_packagesfile - Run
rake npm:install - Use the package in your javascript code by calling the camelize name
or
build_nameif you set it
Example npm_packages file
# call 'React' in your js code to use it
npm 'react'
# Set version
npm 'redux', '3.3.1'
# Set build_name to a package.
# Call '_' to get Underscore
npm 'underscore', build_name: '_'
# You can add a package for development
npm 'jasmine', development: true
# Or in block
development do
npm 'jasmine'
end
# Install a package but do not require it
npm 'browserify', require: falseThe following options are available for configuration in your application or environment-level
config files (config/application.rb, config/environments/development.rb, etc.):
| Configuration Option | Description |
|---|---|
config.npm.package_file |
Specificies a package file. Default value: npm_packages |
config.npm.output_file |
Specifies a file where to bundle npm packages. Default value for production: vendor/assets/javascripts/npm-rails/production/npm-dependencies.js. Default value for other environments: vendor/assets/javascripts/npm-rails/development/npm-dependencies.js |
config.npm.browserify_options |
Sets options for browserify command. See all available options in Browserify documentation |
config.npm.run_before_assets_precompile |
If set to true then run rake npm:install before assets precompilation. Default value: false |
The generator creates npm_packages file. This file contains a list of packages. Rake uses NPM to install the packages and Browserify to bundle them. Browserify output the bundled results to output_file(see configuration options), which are then loaded by sprockets. All packages attached to window by build_name, which by default is the camelize package name.