Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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.5k
Amplify Japan User Group and OSS
watilde
0
1.2k
Web VitalsとJavaScriptエラーの可視化 - フロントエンドにおけるObservabilityとは / visualize-web-vitals-and-javascript-error
watilde
6
2.9k
Firefighting planner
watilde
1
150
Doctor Wombat - A debug guide to using npm.
watilde
0
560
Asynchronous wombats - some of the communication issues from our differences we face on GitHub
watilde
0
580
Write a song in JavaScript
watilde
3
790
npm3 ❓
watilde
18
13k
Other Decks in Programming
See All in Programming
Architectural Extensions
denyspoltorak
0
120
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
660
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
170
Graviton と Nitro と私
maroon1st
0
170
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
JETLS.jl ─ A New Language Server for Julia
abap34
2
480
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
580
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
260
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
230
AtCoder Conference 2025
shindannin
0
950
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
130
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
7.9k
Technical Leadership for Architectural Decision Making
baasie
0
220
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
120
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
410
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
230
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
250
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
47
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
67
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
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?