この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
jQuery 2.0 をビルドしてみよう
jQuery 2.0 を自前でビルドしてみます。自前でビルドすることでモジュールを省くことができます。
ビルド
ビルドするためにはgruntコマンドを使います。インストールしていない場合は、gruntをインストールしておきます。
gruntについては、nodebrew, npm, grunt 環境構築手順でインストールしてください。
また、grunt -version コマンドでgrunt-cliが入っていない場合は、grunt-cliをインストールしておきます。
$ grunt -version
grunt-cli v0.1.7
grunt v0.4.1
ソース取得
githubからjqueryのソースを取得します
git clone git://github.com/jquery/jquery.git
依存ファイル取得
npm install
ビルド
grunt
カスタムビルド
npm install
grunt
カスタムビルド
custom:のあとにモジュールを指定します。
モジュール
- ajax: AJAX関連のモジュール
- ajax/xhr: XMLHTTPRequestを使ったAJAXのモジュール
- ajax/script:
<script>
タグを使ったAJAXのモジュール - ajax/jsonp: JSONPを使ったAJAXのモジュール
- css:
.css()
メソッドなどcssに関連するモジュール - deprecated: 廃止予定として文書化するモジュール
- dimensions: サイズを指定するモジュール
- effects: エフェクトに関するモジュール
- event-alias: イベントエイリアスのモジュール
- offset: オフセットのモジュール
- wrap: ラップモジュール
- sizzle: Sizzle セレクターエンジンのモジュール
詳しくはこちら https://github.com/jquery/jquery#how-to-build-your-own-jquery
grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event-alias,-offset,-sizzle
ビルドログ
$ git clone git://github.com/jquery/jquery.git
Cloning into 'jquery'...
remote: Counting objects: 28411, done.
remote: Compressing objects: 100% (7550/7550), done.
remote: Total 28411 (delta 20972), reused 27540 (delta 20262)
Receiving objects: 100% (28411/28411), 14.38 MiB | 550 KiB/s, done.
Resolving deltas: 100% (20972/20972), done.
$ cd jquery
$ ls
AUTHORS.txt README.md src/
CONTRIBUTING.md build/ test/
Gruntfile.js package.json
MIT-LICENSE.txt speed/
$ npm install
npm http GET https://registry.npmjs.org/grunt-contrib-jshint/0.3.0
...
npm http 304 https://registry.npmjs.org/inherits
grunt-git-authors@1.2.0 node_modules/grunt-git-authors
grunt-update-submodules@0.2.0 node_modules/grunt-update-submodules
grunt-compare-size@0.4.0-rc.3 node_modules/grunt-compare-size
grunt-contrib-watch@0.3.1 node_modules/grunt-contrib-watch
└── gaze@0.3.3 (minimatch@0.2.12, fileset@0.1.5)
grunt@0.4.1 node_modules/grunt
├── which@1.0.5
├── dateformat@1.0.2-1.2.3
├── colors@0.6.0-1
├── hooker@0.2.3
├── async@0.1.22
├── eventemitter2@0.4.11
├── nopt@1.0.10 (abbrev@1.0.4)
├── rimraf@2.0.3 (graceful-fs@1.1.14)
├── coffee-script@1.3.3
├── underscore.string@2.2.0rc
├── minimatch@0.2.12 (sigmund@1.0.0, lru-cache@2.3.0)
├── glob@3.1.21 (inherits@1.0.0, graceful-fs@1.2.0)
├── iconv-lite@0.2.8
├── lodash@0.9.2
├── findup-sync@0.1.2 (lodash@1.0.1)
└── js-yaml@2.0.4 (argparse@0.1.11)
gzip-js@0.3.1 node_modules/gzip-js
├── crc32@0.2.2
└── deflate-js@0.2.2
grunt-contrib-uglify@0.2.0 node_modules/grunt-contrib-uglify
├── grunt-lib-contrib@0.6.1 (zlib-browserify@0.0.1)
└── uglify-js@2.2.5 (optimist@0.3.7, source-map@0.1.22)
testswarm@0.2.2 node_modules/testswarm
└── request@2.16.6 (forever-agent@0.2.0, aws-sign@0.2.0, tunnel-agent@0.2.0, oauth-sign@0.2.0, json-stringify-safe@3.0.0, cookie-jar@0.2.0, node-uuid@1.4.0, mime@1.2.9, qs@0.5.6, hawk@0.10.2, form-data@0.0.7)
grunt-contrib-jshint@0.3.0 node_modules/grunt-contrib-jshint
└── jshint@1.1.0 (peakle@0.0.1, underscore@1.4.4, shelljs@0.1.2, esprima@1.1.0-dev, minimatch@0.2.12, cli@0.4.4-2)
$ grunt
Running "update_submodules" task
Running "selector" task
File 'src/selector-sizzle.js' created.
Running "build:all:*" (build) task
File 'dist/jquery.js' created.
Running "jshint:dist" (jshint) task
>> 1 file lint free.
Running "jshint:grunt" (jshint) task
>> 1 file lint free.
Running "jshint:tests" (jshint) task
>> 23 files lint free.
Running "pre-uglify:all" (pre-uglify) task
Running "uglify:all" (uglify) task
Source Map "dist/jquery.min.map" created.
File "dist/jquery.min.js" created.
Original: 239820 bytes.
Minified: 83139 bytes.
Running "dist:*" (dist) task
Running "compare_size:files" (compare_size) task
raw gz Sizes
240204 71171 dist/jquery.js
83103 29030 dist/jquery.min.js
Saved as: master
Done, without errors.
$ grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event-alias,-offset,-sizzle
Running "custom:-ajax,-css,-deprecated,-dimensions,-effects,-event-alias,-offset,-sizzle" (custom) task
Creating custom build...
Running "build:all:*:-ajax:-css:-deprecated:-dimensions:-effects:-event-alias:-offset:-sizzle" (build) task
Excluding sizzle (src/selector-sizzle.js)
Including sizzle alternate (src/selector-native.js)
Excluding css (src/css.js)
Excluding event-alias (src/event-alias.js)
Excluding ajax (src/ajax.js)
Excluding ajax/script (src/ajax/script.js)
Excluding ajax/jsonp (src/ajax/jsonp.js)
Excluding ajax/xhr (src/ajax/xhr.js)
Excluding effects (src/effects.js)
Excluding offset (src/offset.js)
Excluding dimensions (src/dimensions.js)
Excluding deprecated (src/deprecated.js)
File 'dist/jquery.js' created.
Running "pre-uglify:all" (pre-uglify) task
Running "uglify:all" (uglify) task
Source Map "dist/jquery.min.map" created.
File "dist/jquery.min.js" created.
Original: 116463 bytes.
Minified: 42045 bytes.
Running "dist" task
Done, without errors.