Node.js 專案瘦身神器:用 node-prune 一鍵清理不必要檔案!

作者: Calpa Liu
字數:758
出版:2017 年 11 月 26 日
node_modules 常常塞滿無用檔案,導致打包部署效率低落。本文介紹由 TJ 大神開發的 node-prune 工具,教你如何一鍵移除專案中的多餘檔案與目錄,讓 Node.js 專案體積大幅縮減,部署更快速穩定!

簡述

node-prune 移除所有 node_modules 內的不必要的檔案,例如 markdown, typescript 源碼。具體的移除內容可以看下方的 移除檔案分析

Github: tj/node-prune

node_modules
node_modules

安裝方法

Go

可以透過 Go 直接拉代碼,然後安裝:

go get github.com/tj/node-prune/cmd/node-prune

Shell

另外,如果你沒有 Go 的話,可以直接使用一下命令安裝到 /usr/local/bin: (2018-08-25 更新)

curl -sfL https://install.goreleaser.com/github.com/tj/node-prune.sh | bash -s -- -b /usr/local/bin

使用方法

你可以直接在項目的文件夾裡使用:

node-prune

files total 27,330
files removed 3,990
size removed 13 MB
   duration 200ms

或者你可以在其他文件夾裡面用,例如 node_modules

node-prune path/to/node_modules

files total 27,330
files removed 3,990
size removed 13 MB
   duration 200ms

移除檔案分析

移除的檔案

自動化

這些文件你都會只用一次,無需一同打包上生產環境。

"Makefile"
"Gulpfile.js" // Gulp 任務自動管理工具文件
"Gruntfile.js" // Grunt 任務自動管理工具文件

與寫代碼時相關的

無論你寫代碼所需要的檔案,還是那些編輯器自動產生的檔案,都不是必須的。

".DS_Store" // Mac OS X 下的隱藏文件,用於儲存目錄的自定義屬性
".tern-project" // Tern server 所需文件
".gitattributes" // Git 屬性文件
".editorconfig" // 統一代碼格式的文件
".eslintrc" // 用於統一 Eslint 代碼風格 (JSON)
".eslintrc.js" // 用於統一 Eslint 代碼風格 (JavaScript)
".eslintignore" // 告訴 Eslint 忽略特定文件和目錄
".npmignore" // 告訴 NPM 忽略特定文件和目錄
".jshintrc" // 用於配置 JSHint
".flowconfig" // 用於配置 Facebook 出品的 Flow-typed
".documentup.json"
".yarn-metadata.json"

自動化構建

".travis.yml" // 用於配置 Travis 自動化測試,部署
"appveyor.yml" // 用於配置 AppVeyor 自動化測試,部署
"circle.yml" // 用於配置 Circle 自動化測試,部署
".coveralls.yml" // Coverall

給人類看的

這是最小化項目的其中一個步驟,畢竟你上傳的東西和項目開發的文件夾是不同的。

"CHANGES" // 用於記錄項目改動
"LICENSE.txt" // 開源協議
"LICENSE" // 同上
"AUTHORS" // 作者
"CONTRIBUTORS" // 貢獻者

Yarn 相關

".yarn-integrity" // Yarn 文件
".yarnclean", // Yarn 文件

移除的檔案(副檔名)

如果檔案有以下副檔名的話,也會一同刪除。

".md", // Markdown 檔案
".ts", // TypeScript 源碼
".jst", // Javascript Templates (JST)
".coffee", // CoffeeScript
".tgz", // tgz 壓縮檔案
".swp", // vi 產生檔案

移除的目錄

測試用:“__tests__”,“test”,“tests”,“powered-test”

文件類:“docs”,“doc”

隱藏文件夾:“.idea”,“.vscode”

Demo 類:“website”,“images”,“assets”,“example”,“examples”

自動化工具類:“coverage”,“.nyc_output”,“.circleci”

Github 用: “.github”

感想

我們可以按照這個思路,自己寫一個基於 Node.js 的腳本。另外,在 Github 上面,有人寫了一個等同 Node-prune 的 Shell 腳本。

#!/usr/bin/env bash
find node_modules \( -name '__tests__' -o \
-name 'test' -o \
-name 'tests' -o \
-name 'powered-test' -o \
-name 'docs' -o \
-name 'doc' -o \
-name '.idea' -o \
-name '.vscode' -o \
-name 'website' -o \
-name 'images' -o \
-name 'assets' -o \
-name 'example' -o \
-name 'examples' -o \
-name 'coverage'-o \
-name '.nyc_output' -o \
-name "*.md" -o \
-name "*.ts" -o \
-name "*.jst" -o \
-name "*.coffee" -o \
-name "*.tgz" \) -exec rm -rf {} \;
關於 Calpa

Calpa 擅長使用 TypeScriptReact.jsVue.js 建立 Responsive Website。

他積極參與開源社區,曾在 2019 年的香港開源大會上擔任講者,提供工作經驗和見解。此外,他也在 GitHub 上公開分享個人博客程式碼,已獲得超過 300 顆星星和 60 個分支的支持。

他熱愛學習新技術,並樂意分享經驗。他相信,唯有不斷學習才能跟上快速演變的技術環境。

熱門文章

最新文章

圖片管理中心
管理圖片資源
IP 查詢
快速查詢和定位 IP 地址的地理位置和相關信息
Python 運行器
無需後端、無需登入,只需打開瀏覽器即可運行 Python 代碼(由 Pyodide 提供支持)
封面圖生成器
自動創建適合各種平台的文章封面圖
原作(青山剛昌)產生器
一鍵創建原作(青山剛昌)的封面圖
日本色彩
探索和使用傳統日本色彩
部落格內容洞察儀表板
以視覺化儀表板方式追蹤文章成效、分享熱度與分類分布,協助創作者掌握內容表現。
蒙特卡羅估算 π
使用蒙特卡羅方法演示 π 值的估算過程
LLM
使用 LLM 模型進行聊天
活動圖生成器
一鍵創建活動的封面圖
Wagmi Card
一鍵創建 Wagmi 的封面圖
Facebook Quote
Facebook Quote
Music Macro Language (MML) Studio
用程式語法編寫旋律,用音符構築想像
Blurhash
一鍵創建 Blurhash
文字分類器
使用 MediaPipe TextClassifier 分類文字
前端工程師免費工具資源
前端工程師免費工具資源
後端工程師免費工具資源
後端工程師免費工具資源
全端工程師免費工具資源
全端工程師免費工具資源
Web3 工程師免費工具資源
Web3 工程師免費工具資源
紫微斗數排盤系統|結合 AI 的命盤性格與事業財務分析生成器
紫微斗數排盤工具,輸入生日與時辰,自動生成完整命盤分析提示(Prompt)。結合最專業紫微理論與 AI 助力,助你深入解析性格、事業、財務與人際課題。免費使用,適合命理師及紫微愛好者。
PixAI Prompt 組合器|快速打造可用於 AI 繪圖的語言拼圖
使用 PixAI 卻不會寫 prompt?這個工具幫你一鍵組裝角色、表情、風格語彙,輸出高品質繪圖提示語句(Prompt),可直接貼入 PixAI 使用。適合插畫師、創作者、AI 新手與 VTuber 角色開發者。