Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Too many metafiles and chest.js
Search
Daijiro Wachi
June 24, 2014
Programming
2
3.3k
Too many metafiles and chest.js
東京Node学園 13時限目
「増え続けるmetafileが生む問題とchest.js」
http://nodejs.connpass.com/event/6763/
Daijiro Wachi
June 24, 2014
Tweet
Share
More Decks by Daijiro Wachi
See All by Daijiro Wachi
OSS開発における合意形成にJavaScriptで参加し、変化を起こす / front-end-lounge-1
watilde
6
3.3k
amplify-cliで追加したfunctionに 環境変数・シークレットを設定する機能が どのように実現されたか / amplify-env-vars
watilde
0
1.4k
Amplify Japan User Group and OSS
watilde
0
1.2k
Web VitalsとJavaScriptエラーの可視化 - フロントエンドにおけるObservabilityとは / visualize-web-vitals-and-javascript-error
watilde
6
2.8k
Firefighting planner
watilde
1
140
Doctor Wombat - A debug guide to using npm.
watilde
0
550
Asynchronous wombats - some of the communication issues from our differences we face on GitHub
watilde
0
570
Write a song in JavaScript
watilde
3
780
npm3 ❓
watilde
18
13k
Other Decks in Programming
See All in Programming
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
190
TypeScript 5.9 で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
1.2k
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
140
認証・認可の基本を学ぼう前編
kouyuume
0
190
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
6.9k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
140
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
420
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.2k
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
160
connect-python: convenient protobuf RPC for Python
anuraaga
0
380
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
66k
Music & Morning Musume
bryan
46
7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
4 Signs Your Business is Dying
shpigford
186
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Embracing the Ebb and Flow
colly
88
4.9k
Writing Fast Ruby
sferik
630
62k
Building Adaptive Systems
keathley
44
2.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Making Projects Easy
brettharned
120
6.5k
Docker and Python
trallard
47
3.7k
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?