Tăng tốc setup môi trường lập trình bằng 1 NÚT
White

Đức Duy viết ngày 13/12/2017

alt text

Trước khi code bạn cần làm những điều gì?

  • SSH đến 1 vài server.
  • NPM run 2,3 project.
  • Bật IDE sau đó open vài project.

Một ví dụ cụ thể về cá nhân:
Mình chuyển 1 dự án laravel sang thuần JS với front-end NuxtJS, back-end MicroJS, và phải SSH đến mongoDB trên server. Đây là những thứ mình cần làm khi bắt đầu code

  • Mở 3 project Webstorm, 1 NuxtJs, 1 Microjs, 1 Laravel. Quan trọng là phải chờ Webstorm khởi động lên mới có thể mở được 2 project nữa =))
  • 1 terminal Tunnel SSH, 1 terminal run nuxtjs, 1 terminal run microjs

Mọe, nhiều thứ phải mở voaiz.

Một thằng lười như mình nhất định phải viết lệnh bash để automation.

Dưới đây, mình sẽ giải thích quá trình search google tìm lệnh bash của mình, các bạn không care có thể kéo xuống cuối bài để xem code example của mình đang làm với project hiện tại :D

Nhưng con gà lệnh bash như mình gặp phải các vấn đề sau:

  1. Sh webstorm.sh chỉ có thể mở được webstorm, làm sao để mở chính xác và đủ 3 project mình cần?
  2. Các lệnh của SSH hoặc npm của mình đều phải chạy trên các tab riêng biệt để quản lý, không thể chạy ngầm.
  3. Lúc nào cần các lệnh bash chạy async, lúc nào thì cần chạy tuần tự? Ví dụ của mình đó là, mình phải ssh thành công vào server sau đó mới run microjs nếu không mongoose sẽ báo lỗi. Còn lại thì nên chạy asyn để tăng tốc độ.

Xử lý từng vấn đề một nhé

  1. Sau khi search trên google mình phát hiện ra lệnh sh đến webstorm có thể mở chính xác project mình cần thông qua đường dẫn đến project đó. Nguồn
    Thế thì mở nhiều project thì sao nhỉ?
    Ban đầu mình chạy tiếp 1 lệnh sh webstorm.sh /home/path/ nhưng không work vì webstorm.sh chỉ được chạy 1 lần duy nhất. Hmm, một cách võ đoán mình chạy 1 lệnh sh với nhiều đường đẫn sh webstorm.sh /home/path/project1 /home/path/project2 /home/path/project3 và work =)))
    Ok. thế là xong bài toán 1.

  2. Đầu tiên mình tìm thấy 1 lệnh gọi là gnome-terminal để mở 1 terminal. Nhưng mình không thể mở 3 terminal được, trông rất ngu. Vậy làm sao chỉ mở 1 terminal với 3 tabs?
    Và mình phát hiện ra nó có 1 params là --tab.
    Vậy là đã chạy được 1 terminal với 3 tab.

  3. Vấn đề async. Một điều thú vị là khi chạy ở 3 tab khác nhau, các câu lệnh sẽ được chạy async . Điều đó rất tốt chỉ có điều mình không khởi động microJS được vì nó báo lỗi kết nối database =)). OK, một cách tay chân, mình không biết được khi nào nó SSH xong nên mình dùng lệnh sleep 3s ở câu lệnh npm start :v
    Tiếp theo, webstorm nên chạy async vì nó khá nặng. Rất đơn giản, chúng ta thêm dấu & ở cuối câu lệnh là được .

Dưới đây là đoạn code đầy đủ của mình:

 #!/bin/bash

export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" && nvm use 8

sh /home/d/app/WebStorm-173.3727.108/bin/webstorm.sh /home/d/WebstormProjects/baoketqua-client/ /home/d/WebstormProjects/baoketqua-server/ &

tab=" --tab"
options=()

cmds[1]="ssh -L 27017:127.0.0.1:27017 duyld@xxx.com"

cmds[2]="sleep 3s && cd /home/d/WebstormProjects/xxx-server/ && npm start"

cmds[3]="cd /home/d/WebstormProjects/xxx-client/ && npm run dev"

for i in 1 2 3; do
options+=($tab -e "bash -c '${cmds[i]} ; bash'" )
done

gnome-terminal "${options[@]}"

exit 0

Mình lưu đoạn code này lại để ở Desktop. Mỗi lần muốn code project này mình chỉ cần click chuột vào file sh là được. hehe

P/s: Lần đầu viết bài tại kipalog =)))

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Đức Duy

2 bài viết.
12 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
18 1
(Ảnh) Lời dẫn Do tôi có nhu cầu chuyển việc nhưng lại quá đau đầu với cách tìm kiếm việc làm thông thường, các filter trên website không đủ với ...
Đức Duy viết 7 tháng trước
18 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
2 bài viết.
12 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!