lib/tasks/npm.rake
require 'fileutils'
namespace :npm do
desc "Install npm packages"
task :install do
package_file = ::Rails.configuration.npm.package_file
browserify_options = ::Rails.configuration.npm.browserify_options
output_path = ::Rails.root.join(::Rails.configuration.npm.output_path)
output_file = "npm-dependencies.js"
output_file_path = output_path.join(output_file)
Npm::Rails::TaskHelpers.create_file(output_path, output_file) unless File.exist?(output_file_path)
Npm::Rails::PackageBundler.bundle(::Rails.root, package_file, ::Rails.env) do |packages, bundle_file_path|
sh "npm install --prefix #{ ::Rails.root } --loglevel error #{ packages }"
browserify = Npm::Rails::TaskHelpers.find_browserify(::Rails.root.join("node_modules"))
browserify_command = "#{ browserify } #{ browserify_options } #{ bundle_file_path } > #{ output_file_path }"
if Rails.env.production?
browserify_command = "NODE_ENV=production #{ browserify_command }"
end
sh browserify_command
end
end
end
if ::Rails.configuration.npm.run_before_assets_precompile
task "assets:precompile" => ["npm:install"]
end