日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

package.json---入门说明

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 package.json---入门说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直接的說:就是管理你本地安裝的npm包?
一個package.json文件可以做如下事情:

展示項目所依賴的npm包?
允許你指定一個包的版本[范圍]?
讓你建立起穩定,意味著你可以更好的與其他開發者共享

創建package.json

在你要創建的目錄下執行:npm init,系統會一一提示設置相關配置。提示設置的字段均為必填字段(有的可以用回車鍵,即設置為空帶過)

  • npm init –yes|-y: 執行此命令,則會直接創建一個package.json,只配置了一些必填字段,并且給出默認值。其中name: 所處的文件夾名稱

package.json配置說明

這里說的項目廣義,比如:我們可以把我們的項目發布成一個npm包

  • name: 項目名稱
  • version: 項目版本號
  • description: 項目描述
  • keywords: {Array}關鍵詞,便于用戶搜索到我們的項目
  • homepage: 項目url主頁
  • bugs: 項目問題反饋的Url或email配置,如:?
    {??
    “url” : “https://github.com/owner/project/issues“,?
    “email” : “project@hostname.com”?
    }

  • license: 項目許可證,讓使用者知道是如何被允許使用此項目。默認是”ISC”

  • author,contributors: 作者和貢獻者。格式設置如下:?
    { “name” : “Barney Rubble”?
    , “email” : “b@rubble.com”?
    , “url” : “http://barnyrubble.tumblr.com/”?
    }

  • files: 包含在項目中的文件數組。如果在數組里面聲明了一個文件夾,那也會包含文件夾中的文件??梢月暶饕恍┮巹t來忽略部分文件。可以在項目根目錄或者子目錄里聲明一個.npmignore。

Certain files are always included, regardless of settings:

package.json?
README (and its variants)?
CHANGELOG (and its variants)?
LICENSE / LICENCE?
Conversely, some files are always ignored:

.git?
CVS?
.svn?
.hg?
.lock-wscript?
.wafpickle-N?
*.swp?
.DS_Store?
._*?
npm-debug.log

    • main: 主文件。比如默認是index.js,項目名稱叫mymodule。那么require(‘mymodule’)將返回index.js返回的內容
    • bin: 項目用到的可執行文件配置
    • man: 指定一個單一的文件名或一個文件名數組。意思類似于linux命令中的man 命令,來查看一個命令的用法?

      如果只給man字段提供一個文件,則安裝完畢后,它就是man 的結果,這和此文件名無關?

      {?
      “name”: “foo”,?
      “version”: “1.2.3”,?
      “description”: “A packaged foo fooer for fooing foos”,?
      “main”: “foo.js”,?
      “man”: “./man/doc.1”?
      }?
      上面這個配置將會在執行man foo時就會使用./man/doc.1這個文件。

如果指定的文件名并未以包名開頭,那么它會被冠以前綴,像這樣

{?
“name”: “foo”,?
“version”: “1.2.3”,?
“description”: “A packaged foo fooer for fooing foos”,?
“main”: “foo.js”,?
“man”: [?
“./man/foo.1”,?
“./man/bar.1”?
]?
}?
這將會為man foo和man foo-bar創建文件

man文件必須以一個數字結尾,和一個可選的.gz后綴(當它被壓縮時)。這個數字說明了這個文件被安裝到哪個節中

{?
“name”: “foo”,?
“version”: “1.2.3”,?
“description”: “A packaged foo fooer for fooing foos”,?
“main”: “foo.js”,?
“man”: [?
“./man/foo.1”,?
“./man/foo.2”?
]?
}?
會為使用man foo和man 2 foo而創建

  • directories: CommonJS Packages規范說明了幾種你可以用directories對象來標示你的包結構的方法
  • directories.lib: 告訴你庫文件夾的位置,目前沒有什么地方需要用到lib文件夾,但是這是重要的元信息
  • directories.bin: 如果你在directories.bin中指定一個bin目錄,在這個目錄中的所有文件都會被當做在bin來使用。

    由于bin指令的工作方式,同時指定一個bin路徑和設置directories.bin將是一個錯誤。如果你想指定獨立的文件,使用bin,如果想執行某個文件夾里的所有文件,使用directories.bin。

  • directories.doc: 把markdown文件放在這。也許某一天這些文件將被漂亮地展示出來,不過這僅僅是也許

  • directories.man: directories.man指定的文件夾里都是man文件,系統通過遍歷這個文件夾來生成一個man的數組
  • directories.example: 把示例腳本放在這。也許某一天會被用到
  • repository: 項目代碼存放地方

    “repository” :?
    { “type” : “git”?
    , “url” : “https://github.com/npm/npm.git”?
    }?
    “repository” :?
    { “type” : “svn”?
    , “url” : “https://v8.googlecode.com/svn/trunk/”?
    }

  • scripts: 聲明一系列npm腳本指令

  • prepublish: 在包發布之前運行,也會在npm install安裝到本地時運行
  • publish,postpublish: 包被發布之后運行
  • preinstall: 包被安裝前運行
  • install,postinstall: 包被安裝后運行
  • preuninstall,uninstall: 包被卸載前運行
  • postuninstall: 包被卸載后運行
  • preversion: bump包版本前運行
  • postversion: bump包版本后運行
  • pretest,test,posttest: 通過npm test命令運行
  • prestop,stop,poststop: 通過npm stop命令運行
  • prestart,start,poststart: 通過npm start命令運行
  • prerestart,restart,postrestart: 通過npm restart運行
  • "scripts": {

    ? ? ? ? "dev": "npm run start",

    ? ? ? ? "dist": "cross-env NODE_ENV=production node ./tools/script.js",

    ? ? ? ? "lint": "eslint src/ --ext .js,.vue && stylelint \"src/**/*.vue\" --syntax less",

    ? ? ? ? "lint:js": "eslint src/ --ext .js,.vue",

    ? ? ? ? "lint:style": "stylelint src/**/*.less --syntax less",

    ? ? ? ? "pub": "npm run dist",

    ? ? ? ? "start": "cross-env NODE_ENV=development node ./tools/script.js",

    ? ? ? ? "test": ""

    ? ? }

  • config: 配置項目中需要的配置參數:

    { “name” : “foo”?
    , “config” : { “port” : “8080” }?
    , “scripts” : { “start” : “node server.js” } } }?
    server.js中使用process.env.npm_package_config_port來訪問port?
    用戶也可以這樣修改:npm config set foo:port 80

  • dependencies: 項目在生產環境中依賴的包

  • devDependencies: 項目在開發和測試環境中依賴的包
  • peerDependencies: 在某些情況下,當一個主機無法require依賴包時,你會想要告訴它還有哪些工具或庫與這個依賴包兼容。這通常被成為一個插件。尤其是在host文檔中聲明的模塊會暴露一個特定的接口

    {?
    “name”: “tea-latte”,?
    “version”: “1.3.5”,?
    “peerDependencies”: {?
    “tea”: “2.x”?
    }?
    }?
    這將確保tea-latte這個包只會和2.x版本的tea一起被安裝。執行npm install tea-latte可能產生以下關系圖:?
    ├── tea-latte@1.3.5?
    └── tea@2.2.0

  • bundledDependencies: {Array},發布時會被一起打包的模塊

  • optionalDependencies: 如果一個依賴模塊可以被使用, 同時你也希望在該模塊找不到或無法獲取時npm繼續運行,你可以把這個模塊依賴放到optionalDependencies配置中。這個配置的寫法和dependencies的寫法一樣,不同的是這里邊寫的模塊安裝失敗不會導致npm install失敗。當然,這種模塊就需要你自己在代碼中處理模塊確實的情況了,例如:

    try {?
    var foo = require(‘foo’)?
    var fooVersion = require(‘foo/package.json’).version?
    } catch (er) {?
    foo = null?
    }?
    if ( notGoodFooVersion(fooVersion) ) {?
    foo = null?
    }?
    // .. then later in your program ..?
    if (foo) {?
    foo.doFooThings()?
    }

  • engines: 聲明項目需要的node或npm版本范圍

    { “engines” : { “npm” : “~1.0.20” } }?
    { “engines” : { “node” : “>=0.10.3 <0.12” } }

  • os: 指定你的項目將運行在什么操作系統上

  • cpu: 指定你的項目將運行在什么cpu架構上
  • preferGlobal: 如果你的包需要全局安裝,通過命令行來運行,那么設置為true。如果這個包被本地安裝則會出現一個警告
  • private: 如果設置為true, 那么npm會拒絕發布它
  • publishConfig

轉載于:https://www.cnblogs.com/Super-scarlett/p/8177871.html

總結

以上是生活随笔為你收集整理的package.json---入门说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 神马午夜嘿嘿 | 那个网站可以看毛片 | 国产精品久久久久久精 | 国产午夜啪啪 | 日韩在线视频免费观看 | www.国产视频 | 色图av | 人人舔人人干 | 欧美性猛交ⅹxx乱大交 | 亚洲成人精 | 少妇高潮一区二区三区99刮毛 | 天堂网av2018| 亚洲熟妇av日韩熟妇在线 | 色哟哟导航 | 夜夜狠 | 亚洲欧美综合另类 | 香蕉钻洞视频 | a∨视频| 久草视频免费在线观看 | 超碰日日干 | 国产污污视频在线观看 | 色老头一区二区三区 | 日本免费a级片 | 久久久久这里只有精品 | 日韩阿v | 成人羞羞在线观看网站 | 特级西西444www大精品视频免费看 | 97免费公开视频 | 欧美操操 | 天天想你在线观看完整版高清 | 中文字幕丰满乱子伦无码专区 | 亚洲v国产v | 国产欧美日韩三区 | aaa亚洲精品 | 国产精品传媒一区二区 | 久久久精品小视频 | 国产95在线| 凸凹人妻人人澡人人添 | 裸体视频软件 | a黄视频| 婷婷色九月| 黄色免费在线观看网站 | av一区二区三区在线观看 | 处女朱莉第一次 | 欧美涩涩视频 | 亚洲狠狠干| 性猛交╳xxx乱大交 偷偷操不一样的久久 | 免费a视频在线观看 | 波多野结衣一区二区 | 一区二区三区四区在线免费观看 | 久久婷婷激情 | 337p日本大胆噜噜噜鲁 | 国产ts变态重口人妖hd | 香蕉中文网| 一级日韩片 | 壮汉被书生c到合不拢腿 | japanese在线观看 | 中文在线免费看视频 | 亚洲综合另类小说 | 亚洲精品中文字幕乱码无线 | 91视频黄版| 免费日本黄色 | 看欧美一级片 | 日韩中文字幕在线免费观看 | 裸体美女免费视频网站 | 亚洲AV无码精品黑人黑人 | 午夜免费视频观看 | 日韩一区二区三区在线看 | 精品成人无码久久久久久 | 华丽的外出在线 | 欧美高清视频在线观看 | 久草免费新视频 | 成年人在线播放视频 | 真人抽搐一进一出视频 | 中文字幕无码人妻少妇免费 | 国产精品1页 | 国产精品自拍av | 久久五月天av | 亚洲αv| 性生交大片免费看狂欲 | 国产免费福利视频 | 日韩高清影视 | 97视频在线免费观看 | 91精品人妻互换一区二区 | 日韩精品人妻中文字幕有码 | 女性生殖扒开酷刑vk | 国产亚洲av片在线观看18女人 | 牛牛影视一区二区三区 | 欧美特黄 | 一级视频在线播放 | 精品在线播放 | 国产95在线| 免费国产黄色 | 亚洲污网站 | 亚洲精品国产精华液 | 国内精品视频在线播放 | 欧美日韩精品久久久 | 一本色道久久88亚洲精品综合 | 欧美成人一区在线 |