2019年12月28日 星期六

[Nodejs] 用 PKG 將專案打包為可執行檔

PKG 可以將整個 NodeJS 專案打包為可執行檔,可以看到 PKG 的 Github 上追蹤的 star 數有 15k,但是網路上的範例少之又少。

尤其在使用 Express Generator 所建立出的專案要如何打包,在概念不清楚的情況下如同瞎子摸象般摸索了許久。

打包完成後也經過多台電腦(包含未安裝 NodeJS 環境的電腦)的測試下,終於成功執行了。在此記錄下相關筆記。

一、 安裝 PKG


npm install -g pkg

二、 實際跑跑看官方的範例


官方範例連結

將專案 clone 下後,如同官方範例下方說明所敘述,執行命令: npm install

pkg .
完成後會產生各平台的執行檔。


如果只是要產生 windows 下的執行檔,可以使用命令:
pkg . -t win


三、 Express Generator 建立出的專案如何打包?


我的專案目錄如下圖:


在 package.json 中加入資訊

{
  ....
  "bin": "bin/www",
  "pkg": {
    "scripts":[
      "models/**/*",
      "routes/**/*",
      "app.js"
    ],
    "assets": [
      "views/**/*",
      "public/**/*",
      "data.db",
      ".env"
    ]
  }
}

執行指令:

pkg . -t win

接著就等待完成產生的 exe 檔案吧!


四、 遇到的問題


由於專案使用到了 sqlite3 ,在該 module 中包含了 .node 檔案,沒辦法被包入 exe 中,目前找到的解法只有和 exe 放在同一個目錄下執行。

例如,我的專案用到了node_sqlite3.node,在包好 exe 後,要將該檔案一同複製到相同目錄中,exe 才能成功執行,如下圖:




2019年12月1日 星期日

[Ubuntu] 安裝紀錄

* 建立安裝 USB
(1). Download iso file ( https://www.ubuntu-tw.org/modules/tinyd0/ )
(2). Rufus 製作開機 USB (https://rufus.ie/)


* Install packages

(1). 取得更新
sudo apt-get update

(2). SSH
sudo apt-get install openssh-server

(3). VNC ( https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-18-04 )
sudo apt-get install xfce4 xfce4-goodies
sudo apt-get install tightvncserver

安裝完成後,輸入 vncserver 建立密碼


sudo apt install nginx

sudo systemctl status nginx
or 
sudo service nginx status

(5). 防火牆
sudo apt-get ufw

sudo ufw status

sudo ufw enable
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 5901
sudo ufw allow ssh




* To-do list

setting fixed ip for pppoe
ftp
sftp
domain
cloudflare