All Projects → mattbrictson → Bundleup

mattbrictson / Bundleup

Licence: mit
A friendlier CLI for Bundler’s `update` and `outdated` commands.

Programming Languages

ruby
36898 projects - #4 most used programming language

Labels

Projects that are alternatives of or similar to Bundleup

Mam mol
$mol - fastest reactive micro-modular compact flexible lazy ui web framework.
Stars: ✭ 385 (+246.85%)
Mutual labels:  bundler
Phaser Node Kit
Rapid Game Development with PhaserJS and Node for Modern Browsers
Stars: ✭ 39 (-64.86%)
Mutual labels:  bundler
Denopack
The bundling and minification toolset, made for Deno
Stars: ✭ 81 (-27.03%)
Mutual labels:  bundler
Fuse Box
A blazing fast js bundler/loader with a comprehensive API 🔥
Stars: ✭ 4,055 (+3553.15%)
Mutual labels:  bundler
Bili
Bili makes it easier to bundle JavaScript libraries.
Stars: ✭ 949 (+754.95%)
Mutual labels:  bundler
Aspnetbundling
An assortment of bundling utility classes like custom transformers and fixes for the ASP.NET Web Optimization bundling framework.
Stars: ✭ 61 (-45.05%)
Mutual labels:  bundler
Pundle
👾 peaceful bundles - js bundler, built from the ground up for speed and extensibility
Stars: ✭ 354 (+218.92%)
Mutual labels:  bundler
Cloudflare Workers Webpack Boilerplate
A superbly simple, minimal-config template for building, bundling and deploying Cloudflare Workers with Webpack 🚀
Stars: ✭ 101 (-9.01%)
Mutual labels:  bundler
Scarab
A system to patch your content files.
Stars: ✭ 38 (-65.77%)
Mutual labels:  bundler
Jetpack.js
A ECMAScript bundler and minifier implemented in C++ aimed at excellent performance.
Stars: ✭ 75 (-32.43%)
Mutual labels:  bundler
Sheetify
✨ Modular CSS bundler for browserify
Stars: ✭ 443 (+299.1%)
Mutual labels:  bundler
Parcel Plugin Structurize
A plugin to customize the output (dist) directory structure during production.
Stars: ✭ 29 (-73.87%)
Mutual labels:  bundler
Jekyll Minibundle
A minimalistic asset bundling plugin for Jekyll
Stars: ✭ 65 (-41.44%)
Mutual labels:  bundler
Metro
🚇 The JavaScript bundler for React Native.
Stars: ✭ 4,308 (+3781.08%)
Mutual labels:  bundler
Auxpack
A dashboard for monitoring Webpack build stats.
Stars: ✭ 86 (-22.52%)
Mutual labels:  bundler
Trunk
Build, bundle & ship your Rust WASM application to the web.
Stars: ✭ 378 (+240.54%)
Mutual labels:  bundler
Metro With Symlinks
Metro with Symlinks
Stars: ✭ 49 (-55.86%)
Mutual labels:  bundler
Nexe
🎉 create a single executable out of your node.js apps
Stars: ✭ 10,565 (+9418.02%)
Mutual labels:  bundler
Shortstack
🥞 minimal Rollup + PostCSS modern syntax starter template
Stars: ✭ 94 (-15.32%)
Mutual labels:  bundler
Neuron.js
A Full Feature CommonJS Module Manager, Dependency Graph Handler and Loader for Browsers
Stars: ✭ 66 (-40.54%)
Mutual labels:  bundler

bundleup

Gem Version Build Status

Run bundleup on a Ruby project containing a Gemfile to see what gem dependencies need updating. It is a friendlier command-line interface to Bundler’s bundle update and bundle outdated.

You might like bundleup because it:

  • shows you exactly what gems will be updated lets you decide whether to proceed
  • uses color to call your attention to important gem updates (based on Semver)
  • lets you know when a version "pin" in your Gemfile is preventing an update
  • relies on standard Bundler output and does not patch code or use Bundler internals

Here it is in action:

Sample output

Requirements

  • Bundler 1.16 or later
  • Ruby 2.5 or later

Usage

Assuming you have a Ruby environment, all you need to do is install the bundleup gem:

gem install bundleup

Now, within a Ruby project you can run the bundleup command (the project needs to have a Gemfile and Gemfile.lock):

bundleup

That’s it!

Protip: Any extra command-line arguments will be passed along to bundle update. For example:

# Only upgrade development gems
bundleup --group=development

Experimental: --update-gemfile

💡 This is an experimental feature that may be removed or changed in future versions.

Normally bundleup only makes changes to your Gemfile.lock. It honors the version restrictions ("pins") in your Gemfile and will not update your Gemfile.lock to have versions that are not allowed. However with the --update-gemfile flag, bundleup can update the version pins in your Gemfile as well. Consider the following Gemfile:

gem 'sidekiq', '~> 5.2'
gem 'rubocop', '0.89.0'

Normally running bundleup will report that these gems are pinned and therefore cannot be updated to the latest versions. However, if you pass the --update-gemfile option like this:

$ bundleup --update-gemfile

Now bundleup will automatically edit your Gemfile pins as needed to bring those gems up to date. For example, bundleup would change the Gemfile to look like this:

gem 'sidekiq', '~> 6.1'
gem 'rubocop', '0.90.0'

Note that --update-gemfile will not modify Gemfile entries that contain a comment, like this:

gem 'sidekiq', '~> 5.2' # our monkey patch doesn't work on 6.0+

How bundleup works

bundleup starts by making a backup copy of your Gemfile.lock. Next it runs bundle check (and bundle install if any gems are missing in your local environment), bundle list, then bundle update and bundle list again to find what gems versions are being used before and after Bundler does its updating magic. (Since gems are actually being installed into your Ruby environment during these steps, the process may take a few moments to complete, especially if gems with native extensions need to be compiled.)

Finally, bundleup runs bundle outdated to see the gems that were not updated due to Gemfile restrictions.

After displaying its findings, bundleup gives you the option of keeping the changes. If you answer "no", bundleup will restore your original Gemfile.lock from its backup, leaving your project untouched.

Roadmap

bundleup is very simple at this point, but it could be more. Some possibilities:

  • Automatically commit the Gemfile.lock changes with a nice commit message
  • Integrate with bundler-audit to mark upgrades that have important security fixes
  • Display relevant CHANGELOG entries for major upgrades
  • Non-interactive mode

If you have other ideas, open an issue on GitHub!

Contributing

Code contributions are also welcome! Read CONTRIBUTING.md to get started.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].