隨記-package.json

詳情參考npm-package.json 👈🏻javascript

package.json

1、介紹

  • 存在於根目錄下
  • 定義當前項目所需模塊及項目配置信息
  • npm install 依賴當前文件

2、字段及含義

// ⚠️代碼塊一
-package.json  // * 必有

{
    "name": " name-is-test", // *項目名稱【<214字節, ❌「. _」開頭, ❌大寫字母(依賴包和name),❌非URL安全字符(最終成爲URL的一部分), ❌ 包含「js node」】
    "version": "0.0.1", // *項目版本號-大版本.次要版本.小版本
    "author": "xinxin", // 項目做者
    "description": "第一個node.js程序", // 項目描述 【npm search 便於搜尋】
    "keywords":["node.js","javascript"], // 關鍵字/標籤 【npm search 便於搜尋】
    "private": "false", // 非私有
    "repository": {  // 代碼存儲倉庫
        "type": "git", 
        "url": "https://path/to/url"
    },
    "license":"MIT",  // 許可證 ⚠️詳見下license 許可證
    "engines": { // 指定模塊運行的平臺/瀏覽器的版本號
        "node": "0.10.x",
        "npm": "~1.0.2"
     },
    "bugs":{  // bug日誌
        "url":"https://github.com/owner/project/issues",
        "email":"bug@example.com"
    },
    "contributors":[  // 參與貢獻者
        {
            "name":"李四",
            "email":"lisi@example.com"
        }
    ],
    "scripts": {  // npm 命令行簡寫 詳見原文🔗http://caibaojian.com/npm/misc/scripts.html
        "start": "node server.js",  // server.js 是運行腳本
        // "build": "./node_modules/bin/someTool.js build",
        "build": "someTool build" // bin字段
    },
    "dependencies": { //⚠️ 項目運行依賴的模塊
        "express": "latest",
        "mongoose": "3.8.3",  
        "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
        "express3-handlebars": "~0.5.0",
        "asd" : "http://asdf.com/asdf.tar.gz"
        "MD5": "^1.2.0",
        "two" : "2.x", 
        "thr" : "3.3.x", 
        "dyl" : "file:../dyl"
    },
    "devDependencies": { // ⚠️ 項目開發須要的模塊
        "bower": "~1.2.8",
        "grunt": "~0.4.1",
        "grunt-contrib-concat": "~0.3.0",
        "grunt-contrib-jshint": "~0.7.2",
        "grunt-contrib-uglify": "~0.2.7",
        "grunt-contrib-clean": "~0.5.0",
        "browserify": "2.36.1",
        "grunt-browserify": "~1.3.0",
    },
    "peerDependencies": {
    // 當項目依賴與引入模塊插件依賴爲同一依賴且版本號不一樣時,能夠在用戶安裝不符合條件的/低版本的依賴時進行提示 ⚠️ npm 3.0+ 不會默認安裝 peerDependencies
        "chai": "1.x"
    },
    "optionalDependencies": { // 當某個依賴包沒法找到或者安裝或者打包失敗仍會繼續執行下去
    },
    "bundledDependencies": [ // 能夠下載(壓縮包)依賴包到本地或經過單個文件下載依賴包並執行 npm pack 
        "renderized", "super-streams"
    ],
    "bin": {  // 用來指定各個內部命令對應的可執行文件的位置
        "someTool": "./node_modules/bin/someTool.js",  // script 字段
    },
    "main": "index.js", // 指定加載的入口文件,⚠️當開發者 required("name-is-test"), 使用的是index.js文件返回的對象
    "homepage": "http: xxx", // 當前項目入口url
    "config": {
    // ⚠️ 腳本文件 server.js 能夠引用config字段的值--執行腳本時,詳見代碼塊二,用戶更改config詳見代碼塊三
    // 詳見原文🔗http://caibaojian.com/npm/misc/config.html
        "port": "8080"
    },
    "publishConfig": { // 發佈參數配置如下皆爲默認值,其他參數詳見 config 指向連接👆
        "tag": "latest", // "1.1.1" -> 開發者在安裝依賴未指定版本號時則會安裝tag指定的版本號
        "registry": "https://registry.npmjs.org",  // npm包註冊表的基本URL
        "access": "restricted", // public-公開可見可下載,沒有明確做用域的包同常具備public的訪問級別
    },
    "browser": {
    // 指定該模板供瀏覽器使用的版本。
    //Browserify這樣的瀏覽器打包工具,經過它就知道該打包那個文件。
        "tipso": "./node_modules/tipso/src/tipso.js"
    },
    "os" : [ "darwin", "linux" ], // 指定模塊運行平臺 ["!linux" ]✔️
    "cpu" : [ "x64", "ia32" ], // 指定cpu型號
    "files": ["./doc/aaa"], // 安裝包被安裝時所包含的全部文件,不填寫時則會發布除了不被髮布的文件或其餘被忽略文件的全部文件,默認且必定不被髮布⚠️文件詳見下文
    "man": ["./doc/calc.1"], // 沒搞懂詳見原文🔗(http://caibaojian.com/npm/files/package.json.html#man)
    "preferGlobal": true, // 用戶安裝模塊時不爲全局時發出警告 false-不警告
    "style": ["./node_modules/tipso/src/tipso.css"] // 供瀏覽器使用時,指定樣式文件的位置,樣式文件打包工具parcelify,經過它知道樣式文件的打包位置。
}

// ⚠️代碼塊二

-serve.js


http
  .createServer(...)
  .listen(process.env.npm_package_config_port)
  
// ⚠️代碼塊三

-命令行

npm config set test:port 8000  // test爲項目名稱
license 許可證 [~可略過]
限定其餘開發者使用當前項目(包)的使用方式
  • { "license": "UNLICENSED" } 不準可,== private": true
  • { "license" : "BSD-3-Clause" } 公共許可證【BSD-2-Clause或MIT】,可添加SPDX許可的標識符【⚠️OSI Approved】👈
  • { "license" : "(ISC OR GPL-3.0)" } 多個許可聲明方法
  • { "license" : "SEE LICENSE IN <filename>" } 自定義許可證,⚠️根目錄下建立<filename>文件
版本號規則
  • 1.1.1 -大版本.次要版本.小版本
  • ~1.1.2 -【波浪號】安裝1.1.x的最新版本(不低於1.1.2)
  • ^0.1.2 -【插入號】⚠️安裝0.1.x的最新版本(不低於0.1.2-大版本號爲0表明處於開發階段,同 ~ 相同規則
  • ^1.1.2 -【插入號】安裝1.x.x的最新版本(不低於1.1.2)
  • latest -安裝最新版本
必定會包含文件 --發佈時包含
  1. package.json
  2. README
  3. CHANGES / CHANGELOG / HISTORY
  4. LICENSE / LICENCE
  5. NOTICE
  6. The file in the "main" field
必定會忽略文件 --不會發布
  1. .git
  2. CVS
  3. .svn
  4. .hg
  5. .lock-wscript
  6. .wafpickle-N
  7. .*.swp
  8. .DS_Store
  9. ._*
  10. npm-debug.log
  11. .npmrc
  12. node_modules
  13. config.gypi
  14. *.orig
  15. package-lock.json (use shrinkwrap instead)

3、建立 package.json

  • 建立package.json
npm init [--yes]  // --yes 跳過問題
  • 若是須要提早設置一些信息,如author等,可先執行如下代碼
npm set init.author.email  "test@gmail.com" 
npm set init.author.name  "test" 
npm set init.license  "MIT"

⚠️若是已執行init,再作set設置能夠刪除package.json以後從新init(謹慎使用,若是設置不少,不肯定會不會丟失設置)css

  • script 配置命令行
npm run [script-key]  // 執行命令
npm run // 查看可執行命令
  • 安裝依賴html

    • npm install -安裝package.json中全部依賴模塊
    • npm install xxx --save -安裝xxx模塊並寫入dependencies模塊
    • npm install xxx --save-dev -安裝xxx模塊並寫入devDependencies模塊

若有問題,歡迎指出👏 🙋🏻java

相關文章
相關標籤/搜索