(自用 )npm --save和--save-dev區別

https://blog.csdn.net/playboyanta123/article/details/78349034(原文)vue

目前大多數基於vue的項目都是用vue-cli 建立的。當建立項目完成後,咱們進入到項目目錄,啓動cmd命令窗口,輸入npm install,它就會安裝一堆東西(依賴),而後再輸入npm run dev, 咱們就能夠看到網頁了,整個項目啓動成功。這就是npm 最強大的地方,只使用簡單的兩個命令,咱們就可以快速地在本地啓動一個項目。node

  npm install 就是安裝模塊,npm run dev  就是執行npm script中的命令。當咱們執行npm命令的時候,它到哪裏去找,這就要說到每一個node項目中都有的核心文件package.json 文件。webpack

  項目開始時,咱們就要創建這個文件。假設咱們要建立一個node 項目,咱們會新建一個文件夾命名node, 這時咱們就要建立package.json文件。進入node 文件夾,你能夠手動建立,就和建立一個txt文件同樣,但咱們通常都會使用命令建立,打開cmd 窗口,輸入npm init, 這時你要回答幾個問題,如name,version 等,輸入內容,一路回車鍵,當你輸入yes的時候,package.json 建立成功,你的文件夾中多了這個文件。es6

  其中有幾個字段比較重要:web

  name 項目名稱, 你可能在項目中使用過 var express = require(‘express’), require 函數後面的參數,就是package.json 中的name字段,因此這個name必定要簡短,且不能有大寫,這是規定。vue-cli

  version版本號:安裝一個模塊的時候, 你可能指定過特定的版本號,npm install express @4.13.2, 版本號4.13.2 就是咱們這裏的version。版本號有三個組成部分,4:表示的是大版本,通常是重大升級。13:表示的是小版本, 在大版本的基礎進行的小的更新,如某個功能廢棄了,新增了那個功能。2: 對該版本進行補丁,主要是版本bug的修復。express

  script: 咱們在命令行中執行的全部命令都寫在這個地方,而後用 npm run 去執行這個命令。npm

  項目初始完成後,咱們就能夠進行項目開發。在開發過程當中咱們都會用到一些第三方庫和 框架,尤爲是node 開發, 由於它提供的API 有點底層. 若是想用第三方的東西,就要事先安裝。上面說到 安裝用的命令是npm install。 npm install express --save  --save 是什麼意思?--save表示,咱們安裝模塊的時候,同時把它寫到package.json 文件中。這時打開package.json 文件,咱們看到多了一個dependencies字段,它包括了咱們剛安裝的express. node中有些es6/es7 的語法不支持,咱們使用的時候,就須要進行轉換。這時安裝babel. npm install babel-cli babel-preset-es2015 --save–dev  --save-dev 又是什麼,它也表示安裝依模塊的時候,把它寫到package.json中,不過它寫入的不是dependencies, 而是devDependencies中。json

  devDependencies 和dependencies 有什麼區別?dependencies: 是項目運行時的依賴,就是程序上線後仍然須要依賴,好比express, 咱們程序就是用express 寫的,若是沒有express, 咱們的程序根本沒法運行,更直白一點,dependencies 就是咱們在程序開發的過程當中手動require的模塊。進行express 開發時,server.js中,都會寫  var express  = require(‘express’), 咱們程序直接依賴,因此是dependencies. 瀏覽器

  devDependencies, 開發依賴,就是咱們在開發過程當中須要的依賴。好比babel, 它只負責轉換es6+ 到es5, 轉換完成後,咱們只要轉換後的代碼,上線的時候,直接把轉換後的代碼部署上線,不須要bebal.  這就是開發依賴,只在開發時候起做用, 上線不須要。其實就是咱們在使用webpack開發時,它配置文件裏全部的依賴,都是開發依賴。

  不管devDependencies仍是dependencies中,安裝的模塊版本號前面還有符號^, 其實這裏還有不少符號也能夠無符號,符號主要是限定版本。

  "express": "4.15.2" 版本號前面什麼符號都沒有,它表示固定版本,安裝版本時,只會安裝這個指定的版本。

  "express": "~4.15.2",版本號前面有符號~,它表示安裝4.15.x 的版本,只x>3 就能夠。在這裏,咱們express指定是4.15.2 版本,當咱們npm install 安裝的時候,它可能在項目中安裝4.15.5或者4.15.6 版本。

  "express": "^4.15.2" , 版本號前面有符號^, 它表示能夠安裝4.x.x 的版本,只要中間的x  大於15就能夠。

  >=4.15.3  版本號前面有符號>=, 它安裝大於咱們指定的版本,就能夠。

  有時還看到一個*, 表示安裝最新版本。

  版本號必定要注意,由於有些框架和庫在進行版本升級的時候,向後兼容性必較差,容易引發代碼衝突。但npm install 進行安裝的時候,它默認是^ 符號,若是不符合咱們要求,咱們能夠對package.json 進行手動修改,如 把^號改爲~, 或直接去掉符號, package.json文件,只是一個文件, 咱們能夠手動地進行任何修改。

  最後再說一下package.json 中的scripts. 這個字段主要用於運行命令。咱們用es6 寫一個hello World項目體驗下。在node文件夾中新建index.js 


import express from "express";
let app = express();

app.get('/', (req,res)=> {
res.send("hello World")
})
app.listen(8080)

  因爲node 不支持 import 命令,因此要把它轉成require 的形式,這要用到babel 命令: babel index.js –o server.js,因爲babel-cli  是安裝到本地的,因此不能全局使用,那麼這個命令寫在什麼地方?就是寫在scripts 中,

 

  在scripts中的命令,都要用npm run 命令名啓動。這時在命令行中輸入npm run build,能夠看到目錄中多了一個server.js文件,再在命令行中輸入node server, 就能夠啓動服務器。瀏覽器地址欄中輸入localhost:8080, 看到hello world.

  這裏咱們在命令行中輸入了兩次命令,其實能夠把這兩個命令合併到 一個命令中,修改scripts 中的build 以下, 直接npm run build  就能夠啓動服務器。

"build": "babel index.js -o server.js && node server"
  npm 也能夠作部分的任務自動化。

  整個package.json文件以下:

{ "name": "node", "version": "1.0.0", "description": "node project", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "babel index.js -o server.js && node server" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.15.2" }, "devDependencies": { "babel-cli": "^6.24.1", "babel-preset-es2015": "^6.24.1" }}-----------

相關文章
相關標籤/搜索