Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dependency management and build tool for JavaScript

I have many JS snippets and files shared across multiple projects. I have to either copy-past them into a single file for each project, or serve them as individual files on cdn. Both are bad ideas.

Is there any dependency management and build tool like Maven for JavaScript? Ideally it would take a set of js dependencies and build a single js file which can be served on cdn.

I can write a script to do that. But I'm looking to find if anything comparable to Maven exists for JS.


Update 2014: Based on answers here and my research following are most popular tools:

Bower, NPM, RequireJS, Browserify, Webpack, Grunt, Gulp

like image 469
Ali Shakiba Avatar asked Sep 08 '12 20:09

Ali Shakiba


3 Answers

There's RequireJS, but that's kind of a different thing than Maven, and what you're asking it to do is different than Maven too. There are any number of JS combiner/minifiers, like jekyll-combiner and a zillion others.

If you're using Maven, the JavaScript Maven Tools might be of interest. If you're not, I don't know of a unified way to specifiy, download, combine, etc. for arbitrary build systems. Some of the node.js stuff might be useful, but I've never used that outside of a node.js context, so I'm not sure.

like image 59
Dave Newton Avatar answered Sep 28 '22 05:09

Dave Newton


http://webjars.org/ packages JS libraries as JAR files and makes them available under Maven.

RequireJS is not a replacement to WebJars; it complements it.RequireJS will use public JS files (on CDNs) at runtime, whereas Webjars will download the necessary files at build-time and have you host them yourself.

Because most JS files are not hosted on CDNs, I use Webjars to download the necessary JS files at build-time, and reference them using RequireJS. That way I get the best of both worlds.

like image 35
Gili Avatar answered Sep 28 '22 05:09

Gili


Take a look to grunt. It's very flexible build tool for javascript projects. Used by jquery team and other big projects. It combine, minify, test, lint js files, wtitten in javascript, have dozens plugins for whatever you want

like image 26
airato Avatar answered Sep 28 '22 03:09

airato