說說對npm的開發模式和生產模式的理解


nodejs這些年的發展非常快,相信沒有哪個前端不知道的了,npm也成為了前端開發中經常用到了的一個命令。那么npm不是只用一個 "npm install xxx"命令就夠了嗎?實際上並不是這樣,發現有些團隊在使用npm的時候沒有認真去搞懂npm在團隊里面或者說是在項目里面的一些用法。

1.從認識package.json開始

  在團隊里面開發,一般會分為開發模式和生產模式(可能會有不同的叫法),有時候還有測試模式,那么這些模式其實跟npm有很大的聯系的。首先看一個簡單的例子,先從npm依賴的package.json文件開始。

{
  "name": "test",
  "version": "1.0.0",
  "description": "test",
  "main": "app.js",
  "scripts": {
    "dev": "gulp dev && node app",
    "pro": "node app"
  },
  "keywords": [
    "test"
  ],
  "dependencies": {
    "koa": "^1.2.0"
  },
  "devDependencies": {
    "gulp": "^3.9.1",
    "koa": "^1.2.0"
  },
  "author": "test",
  "license": "MIT"
}

  這個很簡單的package.json寫法的例子,這里主要應用的是其中的 scripts、dependencies、devDependencies 這三個設置。

2.dependencies、devDependencies這兩個的配置

  關於這個兩個配置,大致可以理解為當執行

    npm install xxx --save

  的時候,模塊會記錄在dependencies里面;
  當執行

    npm install xxx --save-dev

  的時候,模塊會記錄在devDependencies里面。但是有一點的是,很多人在git clone 項目之后都是直接執行" npm i" 或者 "npm install" 就可以把項目的依賴配置好了,而這兩個命令都是安裝devDependencies里面的模塊,那么還需要dependencies來做什么?
  "npm install" 模式的是開發模式,所以安裝模塊是devDependencies里面的模塊,在開發的時候確實夠用了,但是在部署到服務器的時候就不是這樣了。上面的package.json,dependencies(對應生產模式)和 devDependencies(對應開發模式),區別只是在於有沒有 gulp 這個模塊。
  現在反過來想,我們在開發的時候需要用gulp來打包我們的靜態文件,那么到了生產模式,也就是部署到了服務器,我們已經不需要gulp來打包了,因為在開發模式把文件打包好,提交代碼的時候同步就可以了,所以在部署到服務器的時候我們完全不用多安裝gulp這么一個模塊了。
  那么生產模式是怎么執行安裝呢?很簡單,

    npm install --production

  就可以了。這個例子為了理解,只是用了一兩個模塊,實際項目中生產模式和開發模式肯定不止區別一個模塊這么簡單,這個時候就更能體現出兩種模式分開的必要。
  還要提過的測試模式,測試模式一般是歸於開發模式,即把測試模式需要用到的模塊放到devDependencies 里面,目前npm是還沒有獨立出來測試模式的依賴設置。

3.scripts的設置

  大部分人開始開發的時候,對於gulp的構建一般就執行

    gulp

  這個命令,對於運行node的server一般運行

    node app

  這樣類似的命令,但是這樣在團隊里面的開發是不規范的,特別是有些命令加上各種參數,然后比較長的時候就會麻煩了,應該是使用"npm run" 命令和結合scripts的設置。
  scripts是一個object,那么key就是對應的命令,value就是實際上執行的命令,這種命令再長也不怕了。可以看到上面的package.json里面的scripts,里面有兩個命令一本是dev另一個是pro,分別對應開發模式和生產模式。
  當團隊成員開發的時候只需要運行

    npm run dev

  就可以開始開發,當部署到服務器的時候執行

    npm run pro

  就可以啟動服務了。前提是要安裝好依賴模塊,就是上面說到了兩種不同的安裝方式。
  實際項目有可能不止這兩個命令,具體的命令也可能不一樣,比如有可能還有測試模式的命令,又比如只需要打包文件而不要http的服務,那么這時候開發模式和生產模式就是不同的gulp命令了。

4.關於團隊使用

  團隊中使用,最主要的是規范,像npm這樣的使用確實要規范起來,減少團隊配合的阻礙吧,只要是增加了什么模式,只需要告訴他看packaga.json里面的scripts, npm run xxx一下就可以了。當然這里在團隊使用當中,每個項目都應該有一個README.md 的文檔來進行介紹和說明,這里就不詳細介紹了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM