今ã•らãªãŒã‚‰browserifyを使ã£ã¦ã¿ã¾ã—ãŸã€‚
å˜åœ¨ã¯çŸ¥ã£ã¦ã„ãŸã‚‚ã®ã®æ™®æ®µã¯cdnを使ã£ã¦ãƒ©ã‚¤ãƒ–ラリをèªã¿è¾¼ã‚€ã‚ˆã†ã«ã—ã¦ã„ãŸã®ã§ã€
å¿…è¦æ€§ã‚’感ã˜ã¦ã„ã¾ã›ã‚“ã§ã—ãŸã€‚
今回ã€ãƒ©ã‚¤ãƒ–ラリをãƒãƒ¼ã‚«ãƒ«ã«ä¿å˜ã—ãŸã‹ã£ãŸã®ã§ä½¿ã£ã¦ã¿ã¾ã—ãŸã€‚
bowerã¨æ¯”較ã—ã¦npmã ã‘ã§æ¸ˆã‚€ã®ãŒã„ã„ã§ã™ã€‚
ã—ã‹ã—ã€npm上ã®ãƒ©ã‚¤ãƒ–ラリãŒå¯¾å¿œã—ã¦ã„ã‚‹ã‹ã©ã†ã‹åˆ†ã‹ã‚‰ãªã„ã¨ã„ã†ã®ã¯é›£ç‚¹ã§ã™ã。
実際ã«ä½¿ãŠã†ã¨ã—ã¦ã„ãŸãƒ©ã‚¤ãƒ–ラリãŒã†ã¾ãラップã—ã¦ã„ãªã„ã‚‚ã®ãŒã‚りã¾ã—ãŸã€‚
ãã“ã§ã€browserify-shimを使ã„ã¾ã—ãŸã€‚
ã“れã¯ã€CommonJSã§exportã—ã¦ã„ãªã„ライブラリをexportã—ãŸã‹ã®ã‚ˆã†ã«ä½¿ãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã‚‚ã®ã§ã™ã€‚
関連ã—ã¦ã€napaã‚’æ€ã„出ã—ã¾ã—ãŸã€‚
ã†ã¾ãやれã°napaã¨browserify-shimã®çµ„ã¿åˆã‚ã›ã¯æœ€å¼·ã§ã¯ãªã„ã§ã—ょã†ã‹ã€‚
browserify-shimã®ä½¿ã„æ–¹ã¯ã‚ã¾ã‚Šæ¤œç´¢ã—ã¦ã‚‚見ã¤ã‹ã‚‰ãªã‹ã£ãŸã®ã§ã€ãƒ¡ãƒ¢ã—ã¦ãŠãã¾ã™ã€‚
基本的ã«ã¯READMEã«æ›¸ã„ã¦ã‚ã‚‹ã®ãŒãã®ã¾ã¾ãªã®ã§ã™ãŒã€ä¸€çž¬ç†è§£ã—ã«ãã‹ã£ãŸã§ã™ã€‚
以下ã€package.jsonã®ä¸èº«ã®æ›¸ãæ–¹ã§ã™ã€‚ã¾ãšã€
{
"browserify": {
"transform": [ "browserify-shim" ]
}
}
ã“れãŒå¿…é ˆã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€browserify-shimãŒèªè˜ã•れるよã†ã§ã™ã€‚
transformã¯ä»–ã«ã‚‚用途ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ã€‚ãれも興味ã‚りã¾ã™ã€‚
次ã«ã€
{
"browserify-shim": {
"./node_modules/foo/bar.js": { "exports": "Bar" }
}
}
ã“れã¯ã©ã®ãƒ•ァイルã®ã©ã®ã‚ˆã†ã«ãƒ©ãƒƒãƒ—ã™ã‚‹ã®ã‹ã‚’記述ã—ã¾ã™ã€‚
詳細ã¯èª¿ã¹ã¦ã„ã¾ã›ã‚“ãŒã€ã“れã¯bar.jsã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€å¾Œã«
exports = Bar;
ã‚’è¿½åŠ ã—ãŸã‚ˆã†ãªæ„Ÿã˜ã§ã™ã€‚ã‚‚ã¡ã‚ã‚“ã€function(){}ã§ã‚¹ã‚³ãƒ¼ãƒ—を切ã£ã¦ã„ã‚‹ã§ã—ょã†ãŒã€‚
ã•ã¦ã€ä¸€ç•ªæ‚©ã‚“ã ã®ã¯ã€ã©ã†ã‚„ã£ã¦ã“れを利用ã™ã‚‹ã‹ã§ã—ãŸã€‚
状æ³ã¨ã—ã¦ã¯ã€./public/javascripts/hoge.jsã¨ã„ã†ãƒ•ァイルã§ã©ã®ã‚ˆã†ã«ä½¿ã†ã‹ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚
ã“れã¯ã€
var bar = require('../../node_modules/foo/bar.js');
ã¨ã—ãŸã‚‰å‹•ãã¾ã—ãŸã€‚パスãŒé•ã†ã®ãŒæ›²è€…ã§ã™ã€‚
改ã‚ã¦ã€ã“れã¯napaã¨çµ„ã¿åˆã‚ã›ã‚‹ã¨ä¾¿åˆ©ã‹ã‚‚ã—れã¾ã›ã‚“。
最近自分ã§ã‚ˆã使ã£ã¦ã„ã‚‹cdnã¨http://rawgit.com/ã®çµ„ã¿åˆã‚ã›ã«åŒ¹æ•µã™ã‚‹ã‹ã‚‚。
5/13追記。
よりよã„è¨å®šæ–¹æ³•ãŒåˆ†ã‹ã‚Šã¾ã—ãŸã€‚ã¨ã„ã†ã‹å˜ã«browserify自体ã®è¨å®šæ–¹æ³•をよãç†è§£ã—ã¦ã„ãªã‹ã£ãŸã ã‘ã§ã—ãŸã€‚
package.jsonã‚’ã€
{
"browserify": {
"transform": [ "browserify-shim" ]
},
"browser": {
"bar": "./node_modules/foo/bar.js"
},
"browserify-shim": {
"bar": { "exports": "Bar" }
}
}
ã®ã‚ˆã†ã«æ›¸ã‘ã°ã€
var bar = require('bar');
ã¨ã—ã¦åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚
分ã‹ã£ã¦ã—ã¾ãˆã°ç°¡å˜ãªã®ã§ã™ãŒã€browserify-shimã®ãƒ‰ã‚ュメントã ã‘ã§ã¯ç†è§£ã§ããªã‹ã£ãŸã§ã™ã€‚