jQuery 2.0 Grunt ビルド

この記事は公開されてから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

カスタムビルド

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.