モダンなJSライブラリのディレクトリ構成まとめ

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