saebekassebil / teoria

Javascript taught Music Theory
http://saebekassebil.github.io/teoria
MIT License
1.32k stars 114 forks source link

Refactor and simplify package structure #21

Closed saebekassebil closed 11 years ago

saebekassebil commented 11 years ago

Hey guys.

I've been thinking that the directory structure and building process is way to complex for such a simple library. This PR greatly simplifies this structure, and also re-concatenates all the files into a single teoria.js in the root folder - No more building.

This change has allowed me to rule out some NPM dependencies as well as greatly simplifying the Jakefile. The directory structure is now:

teoria/
  .gitignore
  .jshintrc
  Jakefile
  package.json
  teoria.js
  LICENSE
  README.md
  examples/
  test/

I think that this is a great simplification and a good thing, but I'd like to hear if anyone has any rejections regarding this change. If you don't think that this is for the better, please let me know and I'll evaluate the decision from there. This change would also allow me to make a npm package, with greater simplicity.

I'll let this PR stay around for a couple of days, and if I haven't heard any rejections I'll pull it :)

gregjopa commented 11 years ago

I like the current design of having separate js files for each class that makes up teoria. I think having separate js files for each component does a great job showing off the excellent design of the library. If you eliminate the build process and have one single teoria.js file, then it will be harder to develop with because developers don't like to scroll through very large files. Honestly, its not a big deal and more of a first world problem but I would prefer to keep a build process w/ teoria.

Perhaps you could consider using Grunt for building? I know we discussed this before and you didn't like having to include an intro.js and outro.js file in your build process to wrap your library because these are invalid files when validated as stand-alone files. But including these two files and just using Grunt will simplify the build process. Perhaps it could be the lesser of two evils.

Earl-Brown commented 11 years ago

Simply for maintenance purposes, it's better to keep the individual files.

saebekassebil commented 11 years ago

It's just that I've noticed big JavaScript libraries such as Underscore and Backbone.js both having just one "big" file. In fact Teoria isn't that big, a mere 1289 lines of JavaScript actually.

But I think you're right - let's stick to the split up files, keeping it modular and stuff :) I'll look into some other concatenation libraries (so we don't have to use my own "mingler" which is quite out-dated)