Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Too many metafiles and chest.js
Daijiro Wachi
June 24, 2014
Programming
3
2.7k
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
2.3k
amplify-cliで追加したfunctionに 環境変数・シークレットを設定する機能が どのように実現されたか / amplify-env-vars
watilde
0
440
Amplify Japan User Group and OSS
watilde
0
1.1k
Web VitalsとJavaScriptエラーの可視化 - フロントエンドにおけるObservabilityとは / visualize-web-vitals-and-javascript-error
watilde
6
2.1k
Firefighting planner
watilde
1
37
Doctor Wombat - A debug guide to using npm.
watilde
0
220
Asynchronous wombats - some of the communication issues from our differences we face on GitHub
watilde
0
300
Write a song in JavaScript
watilde
4
460
npm3 ❓
watilde
18
12k
Other Decks in Programming
See All in Programming
FullStack eXchange, July 2022
brucel
0
200
「困りごと」から始める個人開発
ikumatadokoro
4
260
NestJS_meetup_atamaplus
atamaplus
0
220
Getting Started With Data Structures
adoranwodo
1
270
ふんわり理解するcontext
rukiadia
1
180
WindowsコンテナDojo:第6回 Red Hat OpenShift入門
oniak3ibm
PRO
0
180
There's an API for that!
mariatta
PRO
0
110
Cloudflare WorkersでGoのHTTPサーバーを動かすライブラリを作った話
syumai
0
150
読みやすいコード クラスメソッド 2022 年度新卒研修
januswel
0
2.9k
RustのWebフレームワーク周りの概観
hayao
0
180
Dagger, la CI, autrement
guikingone
1
120
20220706_Google Apps Scriptを実演で学ぶ~ GAS × Slack ~
apachan
2
630
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
6k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
173
8.6k
Teambox: Starting and Learning
jrom
123
7.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
How to train your dragon (web standard)
notwaldorf
60
3.9k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
We Have a Design System, Now What?
morganepeng
35
3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
580
Writing Fast Ruby
sferik
612
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
Agile that works and the tools we love
rasmusluckow
319
19k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
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?