ผมข้ามขั้นตอนการใช้สำหรับการสร้าง project ใหม่ไป จะมาทดลองใช้ yarn กับ repository เดิมก่อน (เพราะเขาคุยว่าใช้กับ package.json เดิมได้นิ)
basic workflow คือ
- Creating a new project
- Adding/updating/removing dependencies
- Installing/reinstalling your dependencies
- Working with version control (i.e. git)
- Continuous Integration
Jump to Contents
1. เข้าไปที่ project เดิม
ตรงนี้ผมใช้ npm เพื่อติดตั้ง gulp (node_modules.rar นั่น zip ไว้กันพลาด)
2. RUN
สำหรับคนใช้งาน windows 7 กด shift + right click จะมีเมนูชื่อ Open command window here แต่สำหรับ Windows 10 จะขึ้น Open PowerShell window here ซึ่งทั้ง 2 อันนี้ font สร้างความรำคาญตามากในWindows 10 ผมจึงใช้ Cmder แทน
หน้าตาโปรแกรมจะเป็นแบบนี้ สะดวกกว่าใช้ command prompt หลายขุม และมันสามารถตั้งค่าให้คลิกขวาแล้ว run cmder ขึ้นมาได้เหมือนกัน และที่สำคัญ คือสามารถ copy text ได้!
3. เข้ายาน
ผมลองพิมพ์ yarn -v เพื่อลองว่ามันทำงานหรือป่าว
โอ้ ไม่
เฮ้ย! ไม่ๆ เกิดอะไรขึ้น
ไม่ๆๆๆๆๆๆ
ห๊าาาาาาาาาาาาาาา
สิ่งที่เกิดขึ้นก็คือ มันไปเจ๊อะ กับ package.json ของ repository ที่เราทำงานอยู่ มันก็เลยจัดการ building package ที่อยู่ใน dependencies ให้เราให้เสร็จสรรพ!! นี่ยังไม่ได้ init เลยนะ พอเข้าไปดูใน directory node_module ก็พบภาพนี้!
ลองสำรวจดูพบว่า มี ไฟล์แปลกๆ ชื่อ .yarn-integrity ในนั้นเป็น ชื่อ library ที่เราใช้งาน ต่อมาก็เป็น lockfileEntries เยอะมากๆ (จะว่าไปมันก็ดูเกะกะ)
ซึ่งใน node_module เดิม จะมีไฟล์แบบนี้ ดูเรียบร้อยเน๊อะ แต่ directory ข้างในมันยิบย่อยมาก
แต่เมื่อลองเปรียบเทียบขนานไฟล์ดูพบว่าต่างกันเกินครึ่ง! ภาพล่างนี้คือ directory เดิม ที่เคยใช้งาน npm ส่วนภาพถัดไป เป็นภาพหลังจากที่ yarn ได้ลงจอดเรียบร้อยแล้ว
4. เริ่ม Yarn init
พิมพ์คำสั่ง
yarn init
จากนั้นใส่รายละเอียด ใน (วงเล็บคือค่าของ package.json เดิม)
yarn init yarn init v0.27.5 warning package.json: No license field question name (Dv4BizMDL): dv4biz-mdl-yarn question version (0.1.0): question description: test yarn package manager question entry point (index.js): question repository url: question author: MoreMeng question license (MIT): success Saved package.json Done in 84.96s.
ผลลัพท์จะถูกบันทึกใน package.json แบบนี้
{
"name": "dv4biz-mdl-yarn",
"version": "0.1.0",
"devDependencies": {
"critical": "^0.7.2",
"gulp": "^3.9.0",
"gulp-cache": "^0.3.0",
"gulp-clean-css": "^2.0.10",
"gulp-concat": "^2.6.0",
"gulp-css-rebase-urls": "0.0.5",
"gulp-cssnano": "^2.1.2",
"gulp-fixmyjs": "^1.0.2",
"gulp-flatten": "^0.2.0",
"gulp-htmlmin": "^2.0.0",
"gulp-imagemin": "^2.3.0",
"gulp-jshint": "^1.11.2",
"gulp-load-plugins": "^1.0.0",
"gulp-minify-css": "^1.2.4",
"gulp-minify-html": "^1.0.4",
"gulp-rename": "^1.2.2",
"gulp-size": "^2.0.0",
"gulp-todo": "^4.0.0",
"gulp-uglify": "^1.0.1",
"gulp-uncss": "^1.0.5",
"jshint-stylish": "^2.0.1"
},
"description": "test yarn package manager",
"main": "index.js",
"author": "MoreMeng",
"license": "MIT"
}
5. ใช้ yarn add
yarn add webpack
มันก็จะ check ซักแป๊บ แล้วก็ไป linking ให้ใน package.json ไม่เกี่ยวข้องกับ devDependencies
"dependencies": {
"webpack": "^3.2.0"
}
การเพิ่ม dependency
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
หากต้องการเพิ่มใน devDependencies, peerDependencies, และ optionalDependencies ใช้คำสั่งตามลำดับนี้
yarn add [package] –dev
yarn add [package] –peer
yarn add [package] –optional
การอัพเกรด dependency
yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]
การลบ dependency
yarn remove [package]
การติดตั้ง dependency ทั้งหมดของ project
yarn
หรือ
yarn install
จริง ๆ แล้วถ้าเราเพิ่ม dependency ด้วย yarn add มันก็จะติดตั้ง dependency นั้นลงใน project โดยอัตโนมัติ
ซึ่งคำสั่งการทำงานทุกอย่างไม่ต่างจากการใช้ npm หรือ bower เลยแม้แต่น้อย สามารถใช้ได้เหมือนกัน ทำให้สะดวก ไม่เสียเวลามาเรียนรู้คำสั่งใหม่ ซึ่งสามารถอ่านคู่มือของ yarn ในการใช้งาน CLI ได้จากหน้านี้ CLI Introduction ซึ่งจะมีแนะนำการใช้งานแบบละเอียด ส่วนตัวคงไม่ได้เจาะลึกมาก เพราะนาน ๆ ครั้งถึงจะใช้งาน
ส่งท้าย
จริงๆ yarn ได้ทำคู่มือการย้ายจาก npm ไว้แต่ผมเพิ่งเห็น ซึ่งก็เป็นไปตามที่ผมตกใจนั้นแหละ ว่ามันทำอะไร











