JavaScriptのプロジェクトを新しく作るにあたってディレクトリ構成をどうするか悩んだので、オープンソースのライブラリなどを参考にすることに。ということで、モダンなJavaScriptライブラリ・フレームワークのディレクトリ構成をまとめてみました。
モダンと言ってはいますが、全然モダンじゃないライブラリも混ざってるかもしれないです。
jQuery
jquery ├── build │ └── lib ├── speed ├── src │ ├── ajax │ └── sizzle └── test ├── data │ ├── offset │ ├── selector │ └── support ├── qunit └── unit
jQuery Mobile
jquery-mobile ├── build ├── css │ ├── structure │ └── themes │ ├── default │ │ └── images │ └── valencia │ └── images ├── docs │ ├── _assets │ │ ├── css │ │ ├── images │ │ └── js │ ├── about │ ├── api │ ├── buttons │ ├── config │ ├── content │ ├── forms │ │ ├── checkboxes │ │ ├── radiobuttons │ │ ├── search │ │ ├── selects │ │ ├── slider │ │ ├── switch │ │ └── textinputs │ ├── lists │ │ └── images │ ├── pages │ │ ├── docs-links-urltest │ │ ├── dynamic-samples │ │ └── pages-themes │ └── toolbars │ ├── glyphish-icons │ └── images ├── experiments │ └── scrollview ├── external │ ├── r.js │ │ └── dist │ └── requirejs ├── js ├── tests │ ├── functional │ └── unit │ ├── button │ ├── buttonMarkup │ ├── checkboxradio │ ├── collapsible │ ├── controlgroup │ ├── core │ ├── degradeInputs │ ├── dialog │ ├── event │ ├── fieldContain │ ├── fixedToolbar │ ├── init │ ├── listview │ │ └── cache-tests │ ├── media │ ├── navbar │ ├── navigation │ │ ├── base-tests │ │ │ ├── app-base │ │ │ └── content │ │ ├── data-url-tests │ │ ├── dialog-param-test │ │ ├── form-tests │ │ └── path-tests │ │ ├── parent │ │ └── sub-dir │ ├── page │ ├── page-sections │ ├── select │ ├── slider │ ├── support │ ├── textinput │ ├── widget │ └── zoom └── tools
Prototype
prototype ├── dist ├── doc_assets │ └── images ├── ext │ └── update_helper ├── src │ └── prototype │ ├── ajax │ ├── dom │ └── lang ├── test │ ├── functional │ └── unit │ ├── caja_whitelists │ ├── fixtures │ └── templates └── vendor ├── caja_builder ├── legacy_selector │ └── repository ├── nwmatcher │ └── repository ├── pdoc ├── sizzle │ └── repository ├── slick │ └── repository ├── sprockets └── unittest_js
MooTools
mootools-core
├── Docs
│ ├── Browser
│ ├── Class
│ ├── Core
│ ├── Element
│ ├── Fx
│ ├── Request
│ ├── Slick
│ ├── Types
│ └── Utilities
├── Packager
├── Source
│ ├── Browser
│ ├── Class
│ ├── Core
│ ├── Element
│ ├── Fx
│ ├── Request
│ ├── Slick
│ ├── Types
│ └── Utilities
└── Specs
├── 1.2
│ ├── Class
│ ├── Core
│ ├── Element
│ ├── Native
│ └── Utilities
├── 1.3base
│ ├── Class
│ ├── Core
│ ├── Fx
│ └── Types
├── 1.3client
│ ├── Browser
│ ├── Class
│ ├── Core
│ ├── Element
│ ├── Fx
│ ├── Request
│ ├── Types
│ └── Utilities
├── 1.4base
│ └── Types
├── 1.4client
│ ├── Element
│ └── Fx
├── 2.0base
│ ├── Core
│ └── Types
├── 2.0client
│ └── Browser
└── Runner
Sizzle
sizzle
├── speed
│ ├── frameworks
│ └── system
└── test
├── data
└── unit
Underscore.js
underscore
├── docs
│ └── images
└── test
└── vendor
Backbone.js
backbone
├── docs
│ └── images
├── examples
│ └── todos
└── test
└── vendor
Modernizr
Modernizr
├── feature-detects
├── media
└── test
├── caniuse_files
├── js
│ └── lib
└── qunit
Raphaël
raphael
├── plugins
└── test
├── image
└── vendor
UglifyJS
UglifyJS ├── bin ├── lib ├── test │ └── unit │ └── compress │ ├── expected │ └── test └── tmp
psd.js
psd.js ├── deps ├── docs ├── lib ├── src └── test
pdf.js
pdf.js ├── examples │ ├── acroforms │ └── helloworld ├── extensions │ ├── chrome │ └── firefox │ └── components ├── external │ ├── jasmine │ ├── jasmineAdapter │ ├── jpgjs │ └── jsTestDriver ├── src │ └── utils ├── test │ ├── pdfs │ ├── resources │ │ ├── browser_manifests │ │ └── firefox │ │ └── extensions │ │ └── special-powers@mozilla.org │ │ ├── chrome │ │ │ └── specialpowers │ │ │ └── content │ │ └── components │ └── unit │ └── test_reports └── web └── images
three.js
three.js ├── build │ └── custom ├── doc │ └── api │ ├── cameras │ ├── core │ ├── extras │ │ └── core │ └── lights ├── examples │ ├── ctm │ │ └── camaro │ ├── fonts │ │ └── droid │ ├── js │ │ ├── ctm │ │ │ └── license │ │ └── postprocessing │ ├── models │ │ └── animated │ │ └── monster │ ├── obj │ │ ├── blenderscene │ │ ├── buffalo │ │ ├── camaro │ │ ├── cubecolors │ │ ├── f50 │ │ ├── female02 │ │ ├── gallardo │ │ │ └── parts │ │ ├── leeperrysmith │ │ ├── lucy │ │ ├── male02 │ │ ├── ninja │ │ ├── suzanne │ │ ├── veyron │ │ │ └── parts │ │ └── walt │ ├── scenes │ ├── sounds │ ├── textures │ │ ├── cube │ │ │ ├── Bridge2 │ │ │ ├── Escher │ │ │ ├── Park2 │ │ │ ├── Park3Med │ │ │ ├── SwedishRoyalCastle │ │ │ ├── pisa │ │ │ └── skybox │ │ ├── lava │ │ ├── lensflare │ │ ├── minecraft │ │ ├── normal │ │ │ └── ninja │ │ ├── patterns │ │ ├── planets │ │ ├── sprites │ │ └── terrain │ └── utf8 ├── gui │ ├── files │ └── js │ └── libs ├── src │ ├── cameras │ ├── core │ ├── extras │ │ ├── animation │ │ ├── cameras │ │ ├── controls │ │ ├── core │ │ ├── geometries │ │ ├── helpers │ │ ├── loaders │ │ ├── modifiers │ │ ├── objects │ │ ├── plugins │ │ ├── renderers │ │ └── shaders │ ├── lights │ ├── materials │ ├── objects │ ├── renderers │ │ └── renderables │ ├── scenes │ └── textures └── utils ├── compiler └── exporters ├── blender │ └── 2.60 │ └── scripts │ └── addons │ └── io_mesh_threejs ├── ctm ├── fbx │ └── modules │ └── win │ └── Python26_x86 ├── max ├── obj └── utf8
Knockout.js
knockout ├── build │ ├── fragments │ ├── output │ └── tools ├── spec │ └── lib │ └── qunit └── src ├── binding │ └── editDetection ├── subscribables └── templating ├── jquery.tmpl └── native
RequireJS
requirejs
├── dist
│ └── fonts
│ └── PT-Sans
├── docs
│ └── design
└── tests
├── anon
│ └── sub
├── browsertests
│ ├── appendbeforeload
│ ├── async
│ ├── docwritenested
│ ├── noload
│ ├── onerror
│ ├── scriptload
│ ├── scriptloadinteractive
│ ├── scriptloadinteractiveattach
│ └── vardefine
├── circular
│ └── complexPlugin
├── commonjs
│ └── tests
│ └── modules
│ └── 1.0
│ ├── absolute
│ │ └── submodule
│ ├── cyclic
│ ├── determinism
│ │ └── submodule
│ ├── exactExports
│ ├── hasOwnProperty
│ ├── method
│ ├── missing
│ ├── monkeys
│ ├── nested
│ │ └── a
│ │ └── b
│ │ └── c
│ ├── relative
│ │ └── submodule
│ └── transitive
├── defineError
├── doh
│ └── _sounds
├── domReady
├── exports
├── i18n
│ └── nls
│ ├── en-us-surfer
│ └── fr
├── jquery
│ └── scripts
├── jsonp
├── layers
├── nestedDefine
├── order
├── packages
│ ├── bar
│ │ └── 0.4
│ │ └── scripts
│ ├── baz
│ │ └── lib
│ ├── dojox
│ │ └── window
│ ├── foo
│ │ └── lib
│ ├── funky
│ │ └── lib
│ ├── optimizing
│ │ └── packages
│ │ ├── engine
│ │ ├── fuel
│ │ └── tires
│ └── pkgs
│ ├── alpha
│ ├── beta
│ │ └── 0.2
│ │ └── scripts
│ └── dojox
│ ├── chair
│ └── table
├── paths
│ ├── first.js
│ └── impl
├── plugins
│ ├── fromText
│ ├── prime
│ └── textDepend
├── priority
│ └── priorityWithDeps
│ ├── script
│ │ ├── lib
│ │ └── req
│ │ └── utils
│ └── style
├── relative
│ ├── foo
│ │ └── bar
│ ├── greek
│ └── outsideBaseUrl
│ ├── a
│ └── b
├── remoteUrls
├── text
│ └── resources
├── uniques
├── universal
├── urlfetch
├── version1
└── version2
HeadJS
headjs
├── dist
├── src
└── tests
├── manual-tests
└── qunit
LABjs
LABjs └── tests
EaselJS
EaselJS ├── build │ ├── template │ │ └── assets │ └── tools │ ├── google-closure │ └── yuidoc │ ├── bin │ ├── ext │ └── template │ └── assets ├── docs ├── examples │ ├── game │ ├── img │ ├── modernizr │ └── styles ├── lib └── src └── easeljs ├── display ├── events ├── filters ├── geom ├── ui └── utils
History.js
history.js ├── demo ├── scripts │ ├── bundled │ │ ├── html4+html5 │ │ └── html5 │ ├── compressed │ └── uncompressed ├── tests ├── tests.src └── vendor └── qunit ├── qunit └── test
enchant.js
enchant.js ├── dev │ └── plugins ├── doc │ ├── en │ │ ├── javascript │ │ └── symbols │ ├── ja │ │ ├── css │ │ │ └── fonts │ │ ├── javascript │ │ └── symbols │ ├── javascript │ └── template │ ├── css │ │ └── fonts │ ├── javascript │ └── subtemplates ├── examples │ ├── action │ ├── gl │ │ ├── bounding │ │ ├── camera │ │ ├── collada │ │ ├── enchantjs │ │ ├── quaternion │ │ └── shape │ ├── rpg │ ├── shooting │ └── util ├── images ├── ja │ └── plugins ├── plugins │ └── libs └── tests
Paper.js
paper.js ├── build │ └── jsdoc-toolkit ├── dist │ └── docs │ ├── classes │ └── resources │ ├── css │ │ └── assets │ └── js ├── examples │ ├── Animated │ ├── Games │ ├── Node.js │ ├── Rasters │ ├── Scripts │ ├── Tools │ └── css ├── lib ├── node.js ├── src │ ├── basic │ ├── browser │ ├── color │ ├── core │ ├── docs │ ├── item │ ├── path │ ├── project │ ├── style │ ├── text │ ├── tool │ ├── ui │ └── util └── test ├── lib │ └── qunit └── tests
Zepto.js
zepto ├── examples │ ├── iphone │ └── snow ├── spec │ └── javascripts │ ├── helpers │ └── support ├── src ├── test │ └── fixtures └── vendor ├── google-compiler └── yuicompressor
SeaJS
seajs
├── build
├── docs
│ ├── assets
│ ├── demo
│ │ ├── calculator
│ │ │ └── online
│ │ ├── coffee-and-less
│ │ ├── hello-seajs
│ │ ├── spinning-icons
│ │ └── todos
│ └── zh-cn
├── lib
├── src
│ └── plugins
├── support
└── test
├── bootstrap
├── issues
│ ├── anonymous
│ ├── anywhere
│ ├── combo-use
│ ├── config-base
│ │ └── js
│ │ ├── biz
│ │ │ └── sub
│ │ └── xxlib
│ │ └── 1.0.0
│ ├── config-conflict
│ ├── data-main
│ ├── debug
│ ├── duplicate-load
│ ├── ie-cache
│ ├── inline-module
│ ├── jsonp
│ ├── load-css
│ ├── load-deps
│ ├── local-files
│ ├── map
│ │ ├── build
│ │ └── libs
│ │ └── build
│ ├── module-extend
│ ├── multi-map
│ ├── multi-use
│ ├── multi-versions
│ ├── no-conflict
│ ├── onload
│ ├── parse-deps
│ ├── plugin-coffee
│ ├── plugin-json
│ ├── plugin-less
│ ├── plugin-map
│ ├── plugin-text
│ ├── preload
│ ├── preload-ie
│ ├── remove-comments
│ ├── require-extend
│ ├── seajs-map
│ │ └── sub
│ ├── timestamp
│ └── un-correspondence
├── modules
│ ├── alias
│ │ └── submodule
│ │ └── sub
│ ├── checkPotentialErrors
│ ├── configMap
│ │ └── sub
│ ├── cyclic
│ ├── define
│ ├── determinism
│ │ └── submodule
│ ├── exactExports
│ ├── exports
│ ├── extend
│ ├── hasOwnProperty
│ ├── load
│ ├── math
│ ├── metadata
│ ├── method
│ ├── missing
│ ├── monkeys
│ ├── nested
│ │ └── a
│ │ └── b
│ │ └── c
│ ├── preload
│ ├── relative
│ │ └── submodule
│ ├── simplest
│ ├── transitive
│ └── version
├── packages
│ ├── base
│ └── math
├── research
│ ├── load-js-css
│ ├── onload-order
│ │ └── result
│ ├── reliability
│ │ └── result
│ └── style-order
└── unit
CamanJS
CamanJS
├── adapters
├── dist
├── docs
├── examples
│ ├── browser
│ ├── images
│ └── node
├── proxies
├── src
│ ├── core
│ ├── lib
│ └── plugins
└── test
├── benchmark
│ └── flot
└── qunit
CasperJS
casperjs
├── bin
├── docs
├── modules
│ └── vendors
├── samples
└── tests
├── site
│ └── images
└── suites
└── casper
Spine
spine
├── lib
├── src
└── test
├── lib
└── specs
JavaScriptMVC
javascriptmvc ├── documentjs ├── funcit ├── funcunit ├── jmvc │ ├── docs │ ├── fonts │ ├── images │ │ ├── backgrounds │ │ │ └── download │ │ └── team │ ├── pages │ ├── scripts │ ├── site │ │ ├── scripts │ │ └── views │ └── stylesheets ├── jquery ├── mxui ├── scripts ├── steal ├── test │ └── scripts └── tutorials ├── ajaxy │ └── fixtures ├── examples │ └── contacts ├── getstarted ├── images ├── mvc └── rapidstart
AngularJS
angular.js ├── css ├── docs │ ├── content │ │ ├── api │ │ ├── cookbook │ │ ├── guide │ │ └── misc │ ├── examples │ │ └── ng-include │ ├── img │ │ ├── guide │ │ └── tutorial │ ├── spec │ └── src │ └── templates │ └── syntaxhighlighter ├── example │ ├── buzz │ ├── personalLog │ │ ├── scenario │ │ └── test │ └── tweeter ├── i18n │ ├── closure │ ├── e2e │ ├── locale │ ├── spec │ └── src ├── images │ ├── css │ ├── docs │ │ ├── guide │ │ │ ├── about_view.graffle │ │ │ │ └── QuickLook │ │ │ └── simple_scope.graffle │ │ │ └── QuickLook │ │ └── tutorial │ │ ├── simple_scope.graffle │ │ │ └── QuickLook │ │ ├── tutorial_02.graffle │ │ │ └── QuickLook │ │ ├── tutorial_03.graffle │ │ │ └── QuickLook │ │ ├── tutorial_04-06.graffle │ │ │ └── QuickLook │ │ ├── tutorial_04.graffle │ │ │ └── QuickLook │ │ ├── tutorial_07.graffle │ │ │ └── QuickLook │ │ ├── tutorial_08-09.graffle │ │ │ └── QuickLook │ │ ├── tutorial_10-11.graffle │ │ │ └── QuickLook │ │ └── tutorial_proto.graffle │ │ └── QuickLook │ └── logo │ └── Angular.graffle │ └── QuickLook ├── lib │ ├── closure-compiler │ ├── htmlparser │ ├── jasmine │ ├── jasmine-jstd-adapter │ ├── jquery │ ├── jsl │ ├── jstestdriver │ ├── nodeserver │ └── showdown ├── logs ├── perf │ └── data ├── regression ├── src │ ├── jstd-scenario-adapter │ ├── scenario │ │ └── output │ ├── service │ │ └── filter │ └── widget ├── test │ ├── jstd-scenario-adapter │ ├── scenario │ │ ├── e2e │ │ └── output │ ├── service │ │ └── filter │ └── widget └── tmp
Benchmark.js
benchmark.js
├── doc
├── example
│ └── jsperf
├── plugin
├── test
│ └── benchmark.air
│ ├── bin-debug
│ └── src
└── vendor
├── docdown
├── platform.js
├── qunit
├── qunit-clib
└── requirejs
Qwery
qwery ├── config ├── integration ├── mobile │ └── src ├── pseudos │ └── src ├── src ├── tests └── vendor
Augment.js
augment.js
├── lib
└── test
└── env
html2canvas
html2canvas ├── build ├── external ├── src │ └── plugins └── tests
Davis.js
davis.js
├── docs
├── examples
├── lib
│ ├── extensions
│ └── plugins
├── src
│ ├── extensions
│ └── plugins
└── tests
├── javascripts
└── stylesheets
Moment.js
moment
├── lang
├── min
│ └── lang
└── test
├── lang
└── non-lang
tween.js
tween.js ├── build ├── examples │ ├── css │ ├── js │ └── video ├── src └── utils
URI.js
URI.js ├── prettify ├── src └── test └── qunit