ããããèšäºã«ãããã¹ãŠã¯å°ãªããšãã»ãšãã©ç¥ãããŠãããããã®ååã¯ç§ã確信ããŠããããã«äžè¬çã«äžæã§ããããããã®åãã³ãã¯gulpã§ã®äœæ¥ãå€§å¹ ã«ä¿é²ããããšãã§ããã®ã§ããã®è³æãåãæ¶ããªãå Žåã¯æ¬åœã«ç³ãèš³ãããŸããã«ãªããŸãã
ãã®ããããããžã§ã¯ããžã®ãã¹ãŠã®åç §ãåé€ããå®éã«ã¯èª°ãèŠãããšã®ãªãèšäºãïŒæ¹èšããã³ä¿®æ£ãå ããŠïŒåå ¬éããããšããŸããã ããªããç¡ææ³ãªãã¡ã³ãªããå°ãªããšã2çªç®ã®éšåãèªãã§ãã ãããgulpã奜ãã§ã¯ãªããšããäºå®ã¯ãbrowserifyã奜ãã§ã¯ãªããšããæå³ã§ã¯ãããŸããã
èŠçŽïŒ
- ãšã©ãŒãåŠçããç°¡åãªæ¹æ³ã
- ãœãŒã¹ãã¡ã€ã«ãæ ŒçŽããããã®ãŠãããŒãµã«æ§é ã
- è€æ°ã®ã¹ããªãŒã ïŒããšãã°ãã³ã³ãã€ã«ãããã³ãŒããŒãšjsïŒã1ã€ã«çµåããŸãã
- ããã¹ãã®ã¹ããªãŒã ãäœæããŸãã
- Browserifyçšã®ç¬èªã®ãã©ã°ã€ã³ãäœæããŸãã
- Browserifyã®Gulpãã©ã°ã€ã³ãããã©ã°ã€ã³ãäœæããŸãã
![](https://habrastorage.org/files/7c6/6de/180/7c66de180e8849998a8e73fcea46b691.jpg)
1ã€ã®ãããªããŒã¿ã«ã§äœæ¥ããŠãããšãã«ã gulpã«åãæ¿ããŸããã ä»ã圌ãã¯é 調ã«çºå±ããŠãããç§ã®ãã«ãã·ã¹ãã ã¯ãŸã 圌ããšäžç·ã«ããããã§ãã
ãã®åŸã ã¹ã¿ã€ã©ã¹ã«åãæ¿ããŸããã
ãªãã§ïŒ éåžžã«é«éã§ãã
ç§ã¯èšæ¶ããå€ãã®æ°åãäžããã®ã§ãç§ã¯å°ãåãã€ãããšãã§ããŸãããæ¯çã¯åãã§ããç§ã¯ããããæ£ç¢ºã«èŠããŠããŸãã
å ¥éïŒ
- ããªã声;
- çžäºã«ã»ãšãã©é¢ä¿ã®ãªãå€æ°ã®ã¹ã¿ã€ã«ãã¡ã€ã«ïŒæ··ä¹±ããªãå Žåã¯73ïŒããããŸããã¢ã»ã³ããª-æ¥çã«ãããã®ã§ãã åºæ¬çã«ãã¹ã¿ã€ã«ã¯ã³ã³ããŒãã³ãã§ãããããŒãžããã¯ããã³ã¬ã€ã¢ãŠãã§ãããããäºãã«ç¬ç«ããŠããŸããã»ãšãã©ã®å Žåãå€æ°ã®ã»ããã®ã¿ãæ¥ç¶ãããŠããŸãã
- 1ã€ã«ãŸãšãŸãå€æ°ã®ã¹ã¯ãªããããããŸãã CoffeeScriptãã³ã³ãã€ã«ãããéåžžã®jsã¯å€æŽãããŸããã åãã¡ã€ã«ã¯ã¯ããŒãžã£ãŒã§ã©ãããããŸãã
- ã°ããŒãã«ã¹ããŒã¹ã®ãã©ã«ããŒãããã¹ãŠã®ãã³ãã¬ãŒãã䜿çšããŠãªããžã§ã¯ããäœæããç¹å¥ãªãã©ã°ã€ã³ã䜿çšããŠãå€æ°ã®ããªã³ã³ãã€ã«ããããã¹ã€ãã³ãã¬ãŒãããã¢ã»ã³ãã«ãããã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã«ããããŸãã å®éãåºåãjsãã¡ã€ã«ã§ãã
- åã¢ã€ãã ã®çµã¿ç«ãŠæéã¯ãMacbook Air 2013ãi5ã§ã¯åèšã§çŽ10ç§ãçŽ30ã40ç§ã§ãã PCIeãä»ããŠæ¥ç¶ãããŠããMBAã«ã¯SSDããããããŒããã©ã€ãã®æäœé床ãæäŸããŸããããã¯ãéåžžã®SATAæ¥ç¶ã§ã¯åççã«éæã§ããªãããã§ãã HDDãæèŒããã³ã³ãã¥ãŒã¿ãŒã§ã¯ãçµã¿ç«ãŠã«1å以äžãããå ŽåããããŸãã
ãã¹ãŠã¯ãããŒããã©ã€ãã§ã®äœæ¥ã«ã®ã£ã°ãããããšã瀺ããŠããã3ã€ã®ã¿ã¹ã¯ã®ãã¡1ã€ã ãã§ãäœããã®ãã£ãã·ã¥ã§ãã¹ãŠã解決ã§ããŸãã
åé¡ã®ç 究ã¯ãŸããã¹ã¿ã€ã«ãæãé·ãã³ã³ãã€ã«ãããããšã瀺ããŸããã
ãã®åé¡ã®è§£æ±ºçã¯æ¬¡ã®ãšããã§ãã
- gruntãgulpã«çœ®ãæããŸãã ã³ã³ãã€ã«ãšã¹ã¿ã€ã«ãšã¹ã¯ãªããã®æ¥çã®åé¡ã¯è§£æ±ºãããŸãã-åã ã®ãã¡ã€ã«ã®ãã£ã¹ã¯ãžã®æžã蟌ã¿ã®ã¹ãããã¯åé€ãããŸããã
- sassãã¹ã¿ã€ã©ã¹ã«çœ®ãæãããã¹ãŠãã°ããŒãã«ãã¡ã€ã«ã®ã€ã³ã¯ã«ãŒãã«å€æããŸãã ã¹ã¿ã€ã«ã®ã³ã³ãã€ã«ã¯1ç§æªæºã«å éãããŸãã ã©ããããããŒãããã«ããŒã«åãã¡ã€ã«ã転éãããšãå€ãã®ãªãœãŒã¹ãæ¶è²»ããŸããã ãããŠãã«ããŒãµã¹ã¯éåžžã«é«éã§ã¯ãããŸããã ã¡ãªã¿ã«ã転éã¯ãŸã£ããåé¡ãªãè¡ãããŸãã-sassã¯åºæ¬çãªãã®ã䜿çšããmixinãšé¢æ°ã䜿çšãããç¹å®ã®èŠ³ç¹ãããsass圢åŒã¯ã¹ã¿ã€ã©ã¹åœ¢åŒã®ãµãã»ãããšåŒã¶ããšãã§ããŸãã
- ãã¹ãŠã®coffeescriptãJSã«å€æããŠã³ã³ãã€ã«ãé«éåããã®ã¯è¯ãããšã§ãããããã¯ã»ãšãã©ãå€ããŠã£ãžã§ããã§ããã
- ã¢ããªã±ãŒã·ã§ã³ã®jsã¢ã»ã³ããªã翻蚳ããŠããã£ãã·ã³ã°çšã«ãã©ãŠã¶ãŒåããŸãã
ãã®çµæããããžã§ã¯ãå šäœã®ã¢ã»ã³ããªã«ã¯ãåã ã®ãã¡ã€ã«ã¿ã€ãã®çŽ3ã4ç§ãçŽ1ç§ããããŸããã
ãã¡ããããŠã©ããããã°ã¯äžè¬çã«å³åº§ã«è§£æ±ºããŸããã
ãã以æ¥ãgulp + browserifyã¹ã¿ãã¯ã䜿çšããŠããŸãã
ãã©ãŠã¶ãŒãã©ãŠã¶ãŒã®å©ç¹-ãŠã£ãžã§ãããã¯ããŒãžã£ãŒã§ã©ããããããšãšãæ¬è³ªçã«æãåçŽãªã³ãŒãæ€èšŒ-解æã§ããªãã³ãŒããèŠéããŸããã
ãã ãã倱æããã³ãŒãã¯ã³ã¬ã¯ã¿ãŒã匷å¶çã«ã¯ã©ãã·ã¥ãããŸããã ãã¡ãããããã¯äºå®ã§ã¯ãããŸããã§ããã
ãšã©ãŒåŠç
æåã®è§£æ±ºçã¯æ¬¡ã®ãããªãã®ã§ããïŒ
gulp.task('build-html', function () { ... .pipe(plugins.jade()).on('error', console.log.bind(console)) ...
ããããå€æããããã«ãããã¯ããŸãè¯ããããŸãããã¹ããªãŒã ã¯ãããªãŒãºãããæŽæ°æã«åèµ·åããŸããã
ãªããããèµ·ãã£ãŠããã®ã§ããïŒ å®éã«ã¯ãã¿ã¹ã¯ã¯çµäºããããã®ç¶æ ã§ãã³ã°ãããŸãŸã§ãããäžèšã§èšããšãåã®å®è¡ãçµäºããªããšåèµ·åã¯äžå¯èœã§ããããã§ãã
ç§ã¯é·ãéãã®åé¡ã®è¯ã解決çãæ¢ããŠããŸãããããããŠãã®åé¡ã解決ããããã®ç¬èªã®é¢æ°ãæžããŸããïŒ
function log(error) { console.log([ '', "----------ERROR MESSAGE START----------".bold.red.underline, ("[" + error.name + " in " + error.plugin + "]").red.bold.inverse, error.message, "----------ERROR MESSAGE END----------".bold.red.underline, '' ].join('\n')); this.end(); } gulp.task('build-html', function () { ... .pipe(plugins.jade()).on('error', log) ...
ãŸããã¹ããªãŒã ïŒthis.endïŒïŒïŒãéããŠãã¿ã¹ã¯ãå®äºãããŸãã
å¿ èŠã«å¿ããŠãããšãã°ããªã声ã®ã¢ã©ãŒããè¿œå ã§ããŸãããå人çã«ã¯ååã§ãã
ãã®é¢æ°ã¯ãäºåå®çŸ©ãããã«ã©ãŒnpmããã±ãŒãžãå¿ èŠãšããéåžžã«è¯ãçµè«ãäžããŸãã äœåãªããã±ãŒãžãé 眮ããããªãå Žåã¯ãè±ããã¡ãœãããåé€ã§ããŸãã
ããã§æãéèŠãªããšã¯ãæåŸã®è¡ã§ãã
this.endïŒïŒãå®è¡ãããšãç¹å®ã®gulpã¿ã¹ã¯ãçµäºããŸãã ã¯ããããã¯ã¡ã¢ãªå ã§å°ãããããã§ããããŠã©ããããã°ã¿ã¹ã¯ãæŽæ°ãããšãã¹ã¿ã€ã«ã¢ã»ã³ããªãåå®è¡ã§ããããã«ãªããŸãã
次ã®ããã«ãªããŸãã
![ç»å](https://habrastorage.org/files/8ff/316/c23/8ff316c237b74fbb845bfdae036402e6.png)
ãã©ã«ããŒãšãã¡ã€ã«
ãã¹ãŠã次ã®ãããªãã©ã«ãã«ãã¡ããšé 眮ãããŠããå ŽåïŒ
- è³ç£
- ã¹ã¿ã€ã«
- ã¹ã¯ãªãã
- ãã³ãã¬ãŒã
ããã§ãšãããããŸãã
ããããç§ã«ãšã£ãŠå人çã«ã¯ãã¹ãŠã次ã®ãããªãã®ã§ãã
![](https://habrastorage.org/files/9ed/ace/bb8/9edacebb884e4d67bcb657e0c6368347.png)
䟿å©ã§ã以åããããã£ãšäŸ¿å©ã§ãã ãªãã§ïŒ ã¯ããã³ã¬ã¯ã¿ãŒã«äœãå€æŽããã«ãäºãã«å«ãŸãããã¡ã€ã«ãä»»æã«æ§æããæ©äŒããã£ãããã§ãã
@requireãã¹ã¿ã€ã«ãã¬ã€ã¢ãŠãããã³ãã¬ãŒãã®ã€ã³ã¯ã«ãŒãã§èšè¿°ããã¹ã¯ãªããçšã«browserifyããã ãã§ããã¹ãŠãæ©èœããŸãã
æçµçã«ã¯ããã¹ãŠã®ãããžã§ã¯ãã®åºç€ãšãªãindex.htmlãapp.jsãstyle.cssã«ãªããŸãã
ã©ããã£ãŠæã«å ¥ããã®ïŒ
ãã¹ãŠã®ãããžã§ã¯ãã§ãç§ã¯åæ§ã®ã¹ããŒã ã«åºå·ããããšããŸãïŒ
gulp.task('build-js', function () { return gulp.src('src/**/[^_]*.js') ... gulp.task('build-html', function () { return gulp.src('src/**/[^_]*.jade') ... gulp.task('build-css', function () { return gulp.src('src/**/[^_]*.styl') ...
ããã¯ã©ã®ãããªã°ãããã¹ã§ããïŒ
ããã¯ãã¢ã³ããŒã¹ã³ã¢ã§å§ãŸããªããã¹ãŠã®ãã¡ã€ã«ã®éžæã§ãã ã©ããªæ·±ãã§ãã ãããã£ãŠããã¡ã€ã«ã«src / lib / _some_lib.jsãšããååãä»ããå Žåãããèªäœã¯ã³ã³ãã€ã«ãããŸããã ããããåãã§ããã¯ã¢ããããŠãããèŠæ±ããŸãã
ããŸããŸãªã¿ã¹ã¯ã®çµæãæ¥çãã
çŸåšãç§ã¯ãã®ãã¯ããã¯ã䜿çšããŠããŸãããã³ãŒãã«ãã¹ãŠãå«ããåè·¯ã«åãæ¿ãããããã»ãšãã©ã¡ã¢ãªããæžã蟌ã¿ãŸãã®ã§ãå°ããããã€ãããšãã§ããŸãã
ããããããã¯éåžžã«èå³æ·±ããã®ã§ããããããŠã©ãã«ãèŠã€ãããŸããã§ããã
ããã³ããŒãã©ã«ããŒãããã¹ãŠã®CoffeeScriptãã¡ã€ã«ãšjsãã¡ã€ã«ã貌ãä»ãã次ã«ã¡ã€ã³ãã©ã«ããŒããããªã©ã®åé¡ã解決ããå¿ èŠããã£ããšããæåã¯ã©ãããããããããããªãã£ãã®ã§åæºããŸããã ãªããã®ãããªã·ãŒã±ã³ã¹-æããã ãšæããŸã-ãã³ããŒã¹ã¯ãªãããæåã«ããŒãããå¿ èŠããããŸããããã以å€ã®æ¹æ³ã§ãããè¡ããšããã¹ãŠãæ··ä¹±ããŸãã
ããããäœããç§ã®èšæ¶ã®äžã«ããã°ãããã䜿çšã§ããããšãç¥ã£ãŠããã®ã§ãæãå§ããŸããã ããã§ããgulpã¯ãã€ãã£ãã®nodejsã¹ããªãŒã ã䜿çšããŸããã€ãŸããããã«ã€ããŠäœããè¡ãããšãã§ããŸãã
ç§ã¯èªå®¶è£œã®ãœãªã¥ãŒã·ã§ã³ã«æ¥ãŸããïŒ
var es = require('event-stream'); gulp.task('build', function(){ return es.concat( gulp.src('scripts/vendor/*.coffee').pipe(coffee()), gulp.src('scripts/vendor/*.js'), gulp.src('scripts/*.coffee').pipe(coffee()), gulp.src('scripts/*.js') ) .pipe(concat()) .pipe(dest(...)); })
泚 ïŒæ°ããã€ãã³ãã¹ããªãŒã ã®ããã¥ã¡ã³ãããå€æãããšãconcatã¡ãœããã¯mergeã«ååãå€æŽãããŸããã ç§ã¯ãããå幎åã«æåŸã«ãã£ãã®ã§ãã¡ãœããã«ã¯æ°ãã埮åŠãªäœ¿çšæ³ããããããããŸãã-ã³ãŒãã¯EventStreamã®æ¢ã«å€ãããŒãžã§ã³ã§åäœããå®éã®æ¯èŒçå€ããããžã§ã¯ãããååŸãããŸãã
ãã©ã°ã€ã³æ¥ç¶
10ã20åã®ãã©ã°ã€ã³ãããå Žåãããããæåã§èšè¿°ããã®ã¯å€å°é¢åã«ãªããŸãã
ãã®ããã®å¥ã®ãã©ã°ã€ã³ãããããã©ã°ã€ã³ã¡ãœããã§ãã©ã°ã€ã³ãªããžã§ã¯ããäœæããŸãããåãããšãããæ確ãã€ç°¡åã«è¡ãããšãã§ããŸãã
var gulp = require('gulp'), plugins = {}; Object.keys(require('./package.json')['devDependencies']) .filter(function (pkg) { return pkg.indexOf('gulp-') === 0; }) .forEach(function (pkg) { plugins[pkg.replace('gulp-', '').replace(/-/g, '_')] = require(pkg); });
誰ãããã®ã³ãŒãã®æ£ç¢ºãªåäœãç解ããŠããªãå Žåãpackage.jsonã®devDependenciesã®ã³ã³ãã³ããéããgulp-ã§å§ãŸããã¹ãŠã®èŠçŽ ããã©ã°ã€ã³[pluginName]ãšããŠæ¥ç¶ããŸãã ãã©ã°ã€ã³ãgulp-css-base64ã®ãããªååã®å Žåãplugins.css_base64ã§å ¥æã§ããŸãã
ããã¹ãããã¹ããªãŒã ãäœæããæ¹æ³
ã¡ã¢ãªå ã«äœããäœæãããããã¹ããªãŒã ã«éä¿¡ããå¿ èŠãããå ŽåããããŸãïŒå°ãªããšãåãæ¥çã§ïŒã ç¹°ãè¿ããŸãããããã«ã¯ãã©ã°ã€ã³ããããŸããããªãã§ããïŒ èªåã§ãã¹ãŠã3è¡ã§èšè¿°ã§ããå Žåã
var gutil = require('gulp-util'); function string_from_src(filename, string) { var src = require('stream').Readable({objectMode: true}); src._read = function () { this.push(new gutil.File({cwd: "", base: "", path: filename, contents: new Buffer(string)})); this.push(null); }; return src; }
gulp-utilã®Vynil FSäžã§ãã¹ãŠåäœããŸãããéãã¯äœã§ããïŒ
browserifyã®ãã©ã°ã€ã³
gulpã«é¢ããæçš¿ã§browserifyã䜿çšããçç± ã¯ããä»ã®ã·ã¹ãã ã§äœ¿çšãããã¡ã¿ã¢ã»ã³ããªã·ã¹ãã ãšåŒã°ããå¯èœæ§ãããããã§ãã ãã®æ©èœã¯js-modulesã®åçŽãªæ¥çãã¯ããã«è¶ ããŠãããæçš¿ã®æ¬¡ã®éšåã§ã¯ãã¹ãŠãäžè¬çã«ãŸãšããããŸãã
browserifyããã³commonJSã¢ãžã¥ãŒã«ã䜿çšããŠããå Žåãæ£çŽãªãšããããã®ããã«æžããããšæã£ãããšã¯ãããŸãããïŒ
var vm = new Vue({ template: require('./templates/_app.html.jade'), ...
ã¡ãªã¿ã«ãããã¯åããããžã§ã¯ãã®å®éã®ã³ãŒãã§ãUFOãç§ã®åŸã«é£ãã æçš¿ã«ã€ããŠã§ãã
å€æããããã«ãbrowserifyçšã®ãã©ã°ã€ã³ã®ãªãããã¯åºæ¬ã§ãã
æçµçã«JSãæ§ç¯ããããã®å®éã®ã¿ã¹ã¯ã¯æ¬¡ã®ããã«ãªããŸãã
gulp.task('build-js', function () { return gulp.src('src/**/[^_]*.js') .pipe(plugins.browserify( { transform: [require('./lib/html-jadeify'), 'es6ify'], debug : true } )).on("error", log) .pipe(gulp.dest("build")); });
ããã¯äœã§ãã...ãããŠã©ã®ããã«æ©èœããŸããïŒ ã¯ããéåžžã«ç°¡åã§ãã
æãåçŽãªã©ãããŒã¯æ¬¡ã®ããã«ãªããŸãã
var through = require('through'), jade = require('jade'); function Jadify(file) { var data = ''; if (/\.html\.jade$/.test(file) === false) return through(); else return through(write, end); function write(buf) { data += buf; } function end() { compile(file, data, function (error, result) { if (error) stream.emit('error', error); else stream.queue(result); stream.queue(null); }); } } function compile(file, data, callback) { callback(null, 'module.exports = "' + jade.render(data, {filename: file})+ '"\n'; ); } Jadify.compile = compile; Jadify.sourceMap = true; // use source maps by default module.exports = Jadify;
å°æ¥çã«ã¯ãã¹ããŒã¹ãç¯çŽããããã«ã³ã³ãã€ã«æ©èœã®ã¿ãåŒçšããŸãã
ãã§ã«ãã¹ãŠã®ãã©ã°ã€ã³ãæèšããŠããbrowserify-ninjaãããã«ããå Žåããããã§ããïŒã
ã¯ããäœããããŸããã
ãã®ãã©ãŒã ã«ã¯ããã©ã°ã€ã³ããã§ã«ååšããŸãã
ããããã³ãã¯æ§æãå€æŽã§ããããšã§ãã
äŸïŒ
callback(null, 'module.exports = "' + jade.render(data, {filename: file}) .replace(/"/mg, '\\"') .replace(/\n/mg, '\\n') .replace(/@inject '([^']*)'/mg, '"+require("$1")+"') + '"\n' );
ãããŠä»ãjadeãã³ãã¬ãŒãã«æ¬¡ã®ããã«æžãããšãã§ããŸã
style @inject './_font_styles.styl'
ãã®çµæãjsã®ãã¹ã€ã«ã¯ãã³ãã¬ãŒããããã¹ã€ã®ãã³ãã¬ãŒãã«ã¯ã¹ã¿ã€ã«ãå«ããããšãã§ããŸãã
ããšãã°ãè€æ°ã®ã³ã¬ã¯ã¿ãŒãäžåºŠã«æ¥ç¶ã§ããŸãã
callback(null, 'module.exports = ' + dot.template(jade.render(data, { filename: file })) + '\n');
ããããJadeã§ã©ãããããDoTãã³ãã¬ãŒãJSæ©èœïŒHTMLäžã®ãã³ãã«ããŒã®ãããªãã³ãã¬ãŒããšã³ãžã³ïŒãè¡ããã®ã§ãã
ãããŠãç§ãã¡ã...
...ãã©ã ããŒã«...
... gulpãã©ã°ã€ã³ã䜿çšããŠãgulpã¿ã¹ã¯ãšããŠãã©ã°ã€ã³ã§ããbrowserifyãã©ã°ã€ã³ãäœæããŸã
![](https://habrastorage.org/files/85b/124/499/85b1244995c5446c9cff149730a9c53b.jpg)
ãããŠæåŸã«ãæçš¿å šäœã®éé£ã ãã®ããŒã¿æååãã¹ããªãŒã ã«å€æããŠïŒæçš¿ã®éäžã§èª¬æããïŒãgulpã§äœ¿çšã§ããŸãã äžèšã§ç€ºããé¢æ°ã䜿çšããŠ...
function string_src(filename, string) { var src = require('stream').Readable({ objectMode: true }); src._read = function () { this.push(new gutil.File({ cwd: "", base: "", path: filename, contents: new Buffer(string) })); this.push(null) }; return src; } function compile(path, data, cb) { string_src(path, data) .pipe(gulp_stylus()) .pipe(gulp_css_base64({maxWeightResource: 32 * 1024})) .pipe(gulp_autoprefixer()) .pipe(gulp_cssmin()) .on('data', function(file){ cb(null, "module.exports = \""+ file.contents.toString() .replace(/"/mg, '\\"') .replace(/\n/mg, '\\n') + '"'); }) .on('error', cb); }
ããäžåºŠãéåžžã«æ éã«ïŒ
string_src(path, data) .pipe(gulp_stylus()) .pipe(gulp_css_base64({maxWeightResource: 32 * 1024})) .pipe(gulp_autoprefixer()) .pipe(gulp_cssmin()) .on('data', function(file){ cb(null, "module.exports = \""+ file.contents.toString() .replace(/"/mg, '\\"') .replace(/\n/mg, '\\n') + '"'); })
browserifyã«å ¥ã£ãããŒã¿ãgulpãã©ã°ã€ã³ã®æã«æž¡ããŸããã
ã¯ããããã¯å°ãhemoã§ãã ããããçµæã«ã¯äŸ¡å€ããããŸãã
ãªãã§ïŒ
ãããã«
gulpã¯ãã»ãšãã©ã®ç¶æ³ã«åãããŠã«ã¹ã¿ãã€ãºã§ããé©ãã»ã©ãšã¬ã¬ã³ããªã·ã¹ãã ã§ãã ãããŠããã®ãã©ã°ã€ã³ãbrowserifyïŒããã³ããããã£ãŠãä»ã®ãããžã§ã¯ãïŒã§äœ¿çšã§ãããšããäºå®ã¯ãäžè¬çã«çŽ æŽãããã§ãã ã¯ããå°ãhemoæ žã§ãããããã¯äœãã§ãã
äœãæ°ããããšãåŠãã ããšãé¡ã£ãŠããŸãã ãã£ãšæ£ç¢ºã«èšãã°ãç§ã¯ããã確信ããŠããŸãããçŸããèšããããšæããŸããã
ãããŠãUFOãHabrã«æ»ããéåžžã«å°éã®ããŒã¿ã«åºã¥ããŠãŠãŒã¶ãŒã®é³æ¥œã®å¥œã¿ã«é¢ããæ£ç¢ºãªæšå¥šäºé ãæäŸã§ããWeb Workersããã³ã¢ã«ãŽãªãºã å ã®ãã¥ãŒã©ã«ãããã¯ãŒã¯ã«ã€ããŠã話ãã§ããããšãé¡ã£ãŠããŸãã