Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Too many metafiles and chest.js
Search
Daijiro Wachi
June 24, 2014
Programming
3.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Too many metafiles and chest.js
東京Node学園 13時限目
「増え続けるmetafileが生む問題とchest.js」
http://nodejs.connpass.com/event/6763/
Daijiro Wachi
June 24, 2014
More Decks by Daijiro Wachi
See All by Daijiro Wachi
OSS開発における合意形成にJavaScriptで参加し、変化を起こす / front-end-lounge-1
watilde
6
3.4k
amplify-cliで追加したfunctionに 環境変数・シークレットを設定する機能が どのように実現されたか / amplify-env-vars
watilde
0
1.5k
Amplify Japan User Group and OSS
watilde
0
1.2k
Web VitalsとJavaScriptエラーの可視化 - フロントエンドにおけるObservabilityとは / visualize-web-vitals-and-javascript-error
watilde
6
3k
Firefighting planner
watilde
1
190
Doctor Wombat - A debug guide to using npm.
watilde
0
610
Asynchronous wombats - some of the communication issues from our differences we face on GitHub
watilde
0
610
Write a song in JavaScript
watilde
3
830
npm3 ❓
watilde
18
13k
Other Decks in Programming
See All in Programming
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
JRuby: Past, Present, and Future
headius
0
160
Intent as Code
shoppingjaws
6
1.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.3k
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
520
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.6k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
370
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
810
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
240
XHTMLが残したもの
yosuke_furukawa
PRO
2
830
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
380
Why Our Code Smells
bkeepers
PRO
340
58k
For a Future-Friendly Web
brad_frost
183
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
330
How GitHub (no longer) Works
holman
316
150k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
Transcript
Too Many Metafiles and chest.js @watilde
@author • @watilde • npm publish / month • beeplay,
tvm, jsss • Bootstrap / Ratchet / Flight / Node <3
• PHP @work
Main Subject "Too many metafiles"
Front End Development Tools
tool name file name npm • package.json • .npmrc •
node_modules jshint • .jshintrc • .jshintignore Grunt • Gruntfile.js gulp • gulpfile.js editorconfig • .editorconfig bower • bower.json • .bowerrc component.io • component.json etc… have some metafiles:
Tripling Each Year 0 1 2 3 5 6 7
8 9 2012 2013 2014 Number of metafiles I use frequently
Next Year: 27 Files!? 0 5 10 15 20 25
30 2012 2013 2014 2015 Number of metafiles I use frequently Just kidding XD (maybe…)
4 Problems • Ugly root directory • Init process growing
increasingly complex • Need a "Package Manager" manager • Too many different types of commands
• Ugly root directory • Init process growing increasingly complex
• Need a "Package Manager" manager • Too many different types of commands 4 Problems These are resolved by the current version of chest.js
Ugly root directory •Routine example: $ cd ~/project/ $ ls
.editorconfig .git/ .gitignore .travis.yml .jshintrc bower.json CONTRIBUTING.md Gruntfile.js README.md bin/ lib/ package.json power_assert.js spec/ src/
Init process growing increasingly complex • Most users of these
front end development tools are web designers • Many of them don’t like terminal • Have to run many commands;(
Symbolic Link + .gitignore $ ls ./.meta - package.json -
bower.json ! $ ln -s .meta/* ./ ! $ cat .gitignore ./package.json ./bower.json
npm run-scripts // package.json "scripts": { "install": "ln -s .meta/*
./", "postinstall": "bower install" }, https://www.npmjs.org/doc/scripts.html
Easier
http://chestjs.com/ Enter chest.js
Getting started
e.g) General example project: $ cd ~/project/ $ ls .editorconfig
.git/ .gitignore .travis.yml .jshintrc bower.json CONTRIBUTING.md Gruntfile.js README.md bin/ lib/ package.json power_assert.js spec/ src/
Install chest command $ npm install -g chest $ chest
! @see ‘chest usage’
Put metafiles in the chest $ chest put .editorconfig .travis.yml
Gruntfile.js package.json power_assert.js ! $ ls .chest .git/ .gitignore CONTRIBUTING.md README.md bin/ lib/ spec/ src/
Show list $ chest list .editorconfig .travis.yml bower.json Gruntfile.js package.json
power_assert.js
Create symbolic link $ chest open $ ls .editorconfig .git/
.gitignore .travis.yml .jshintrc bower.json CONTRIBUTING.md Gruntfile.js README.md bin/ lib/ package.json power_assert.js spec/ src/
Support install $ chest install ! run npm install run
bower install
Open & Install in postinstall $ cat package.json ɾɾɾ "scripts":
{ "postinstall": "chest boost" }, ɾɾɾ
What’s next?
• Ugly root directory • Init process growing increasingly complex
• Need a "Package Manager" manager • Too many different types of commands 4 Problems Will resolve these in future versions of chest.js
Need a "Package Manager" manager •Version, Name, Description, etc •Currently
when updating one metafile, you have to changes all the others manually •Ideally, chest.js will manage this info with one base file
Too many different types of commands •case(grunt || gulp) write
usage •Others: npm-run-script, make, bash, etc •difficult to write usage •Challenging to ensure backward compatibility for commands
chest.json { name: ‘node-gakuen’, description: ‘A school for node lovers’,
version: ‘4.13.6’, scripts: { build: { usage: ‘build all file’, run: ‘grunt build’ } } }
chest.json • chest syncɿsync both metainfo { name: ‘node-gakuen’, description:
‘A school for node lovers’, version: ‘0.0.1’, scripts: { build: { usage: ‘build all files’, run: ‘grunt build’ } } }
chest.json •chest-run-scriptsɿcommand rapper required usage { name: ‘node-gakuen’, description: ‘A
school for node lovers’, version: ‘0.0.1’, scripts: { build: { usage: ‘build all file’, run: ‘grunt build’ } } }
http://chestjs.com/ < Thanks! Any questions?