久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

编程问答

npm 详解

發布時間:2024/7/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 npm 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

npm 官方文檔https://docs.npmjs.com/cli/v6/commands/npm-install/

npm 模塊管理器:http://javascript.ruanyifeng.com/nodejs/npm.html

npm 常用命令詳解:https://blog.csdn.net/sxs1995/article/details/80729069

1. 什么是 NPM

NPM 的全稱是 Node Package Manager,是隨同 NodeJS 一起安裝的包管理和分發工具,它很方便讓 JavaScript 開發者下載、安裝、上傳以及管理已經安裝的包。

npm 之于 Node.js ,就像 pip 之于 Python, gem 之于 Ruby, pear 之于 PHP 。

npm 是 Node.js 官方提供的包管理工具,他已經成了 Node.js 包的標準發布平臺,用于 Node.js 包的發布、傳播、依賴控制。

npm 提供了命令行工具,使你可以方便地下載、安裝、升級、刪除包,也可以讓你作為開發者發布并維護包。

2. 為什么要使用 NPM

npm 是隨同 Node.js 一起安裝的包管理工具,能解決 Node.js 代碼部署上的很多問題,常見的場景有以下幾種:

  • 允許用戶從 npm 服務器下載別人編寫的第三方包到本地使用。
  • 允許用戶從 npm 服務器下載并安裝別人編寫的命令行程序到本地使用。
  • 允許用戶將自己編寫的包或命令行程序上傳到 npm 服務器供別人使用。

npm 的背后,是基于 couchdb 的一個數據庫,詳細記錄了每個包的信息,包括作者、版本、依賴、授權信息等。它的一個很重要的作用就是:將開發者從繁瑣的包管理工作(版本、依賴等)中解放出來,更加專注于功能的開發。

3. 如何使用 NPM

npm 安裝、升級

npm 不需要單獨安裝。在安裝 Node 的時候,會連帶一起安裝 npm 。但 Node 附帶的 npm 可能不是最新版本,最后用下面的命令,更新到最新版本。

$ sudo npm install npm@latest -g # Linux 命令 npm install npm -g # Window 系統使用這個命令也就是使用 npm 安裝自己。之所以可以這樣,是因為 npm 本身與 Node 的其他模塊沒有區別。$ npm help # 查看 npm 命令列表 $?npm?-l # 查看各個命令的簡單用法 $?npm?-v # 查看 npm 的版本 $?npm?config list -l # 查看 npm 的配置

注意:npm install npm@latest -g 安裝完之后,如果報錯( 報找不到 npm ),可以再執行?curl -L https://npmjs.com/install.sh | sh 即可。。。

常用命令:

npm version ?查看 npm 和 node 的版本
npm list --depth=0 [-g] ?查看[全局]安裝的包
npm root [-g] ?查看[全局的]包的安裝路徑

npm install 安裝到指定目錄時,需要設置目錄,例如:npm config set prefix "f:\node" ,然后再執行 npm install 包名

npm install 到指定目錄

默認情況下,在哪個文件夾下運行 npm,npm 就在當前目錄創建一個文件夾 node_modules,然后將要安裝的程序安裝到文件夾 node_modules 里面。?這時候其他路徑項目無法引用到該目錄下的模塊!

如果我們需要自主配置的話

  • 1.? 在目標目錄下建立 "node_global" 及 "node_cache" 兩個文件夾。
  • 2.? 在 cmd 中輸入? ? ? ??? ? ? ??
    ? ? ? ? npm config set prefix "F:\14npm\node_global" ? ? ? ?// 設置 npm 安裝程序時的默認位置
    ? ? ? ? npm config set cache "F:\14npm\node_cache"? ? ? ?// 設置 npm 安裝程序時的緩存位置
    ? ? ? ? 但是這時候還是無法 require 這些模塊,需要在環境變量中進行設置!!!!!
  • 3. 在環境變量中添加 模塊保存路徑的變量 NODE_PATH(告訴系統 用戶下載的全局模塊在此處)。新建 NODE_PATH 值為 F:\14npm\node_global\node_modules
  • 4.? 在 PATH 變量里面,添加 nodejs 路徑 ;C:\Program Files\nodejs;
  • 5.? 最后安裝程序命令:$ npm install cheerio?-g? ? 需要加上 -g,不加 -g 關鍵字仍會安裝在你運行 npm 的文件夾下

nodejs 安裝、升級

  • window 系統升級 nodejs 。只能到 nodejs 官網下載 window 安裝包來覆蓋之前的 nodejs。
  • linux 系統升級 nodejs。

    首先使用 npm 全局安裝一個管理node版本的管理模板n,就是n,不用懷疑。
    ?? ??? ?n 的 github地址: https://github.com/tj/n

    安裝命令: npm i -g n ?或者 npm i -g n --force
    升級 node 版本,管理板塊n的命令有很多
    ? ? n 10.0.0 ? ? ?# "n 版本號" 升級到指定的版本
    ? ? n latest? ? ? ?# 安裝最新的版本
    ?? ?n --stable ? ?# 安裝最近的穩定版本
    執行 node -v 查看版本

n 命令 幫助:n help

$ n helpUsage: n [options] [COMMAND] [args]Commands:n Display downloaded node versions and install selectionn latest Install the latest node release (downloading if necessary)n lts Install the latest LTS node release (downloading if necessary)n <version> Install node <version> (downloading if necessary)n run <version> [args ...] Execute downloaded node <version> with [args ...]n which <version> Output path for downloaded node <version>n exec <vers> <cmd> [args...] Execute command with modified PATH, so downloaded node <version> and npm firstn rm <version ...> Remove the given downloaded version(s)n prune Remove all downloaded versions except the installed versionn --latest Output the latest node version availablen --lts Output the latest LTS node version availablen ls Output downloaded versionsn ls-remote [version] Output matching versions available for downloadn uninstall Remove the installed node and npmOptions:-V, --version Output version of n-h, --help Display help information-p, --preserve Preserve npm and npx during install of node (requires rsync)-q, --quiet Disable curl output (if available)-d, --download Download only-a, --arch Override system architecture--all ls-remote displays all matches instead of last 20--insecure Turn off certificate checking for https requests (may be needed from behind a proxy server)--use-xz/--no-use-xz Override automatic detection of xz support and enable/disable use of xz compressed node downloads.Aliases:which: binrun: use, asls: listlsr: ls-remoterm: -lts: stablelatest: currentVersions:Numeric version numbers can be complete or incomplete, with an optional leading 'v'.Versions can also be specified by label, or codename,and other downloadable releases by <remote-folder>/<version>4.9.1, 8, v6.1 Numeric versionslts Newest Long Term Support official releaselatest, current Newest official releaseauto Read version from file: .n-node-version, .node-version, .nvmrc, or package.jsonboron, carbon Codenames for release streamslts_latest node support aliasesand nightly, chakracore-release/latest, rc/10 et al

npm init 初始化一個 package.json 文件

在項目中引導創建一個 package.json 文件,安裝包的信息可保持到項目的 package.json 文件中,以便后續的其它的項目開發或者他人合作使用,也說 package.json 在項目中是必不可少的。npm init?用來初始化生成一個新的 package.json 文件。它會向用戶提問一系列問題,如果你覺得不用修改默認配置,一路回車就可以了。

如果使用了 -f(代表force)、-y(代表yes),則跳過提問階段,直接生成一個新的 package.json 文件。

用法: npm init [-f|--force|-y|--yes] $ npm init -y

npm help 查看命令幫助

查看某條命令的詳細幫助 。基礎語法:npm help <term> [<terms..>]

例如:輸入 npm help install,系統在默認的瀏覽器或者默認的編輯器中打開本地 nodejs 安裝包的文件/nodejs/node_modules/npm/html/doc/cli/npm-install.html

npm?root?查看包的安裝路徑

輸出?node_modules 的路徑

$ npm root [-g]

npm config?管理npm的配置路徑

基礎語法

npm config set <key> <value> [-g|--global] npm config get <key> npm config delete <key> npm config list npm config edit npm get <key> npm set <key> <value> [-g|--global]

對于 config 這塊用得最多應該是設置代理,解決 npm 安裝一些模塊失敗的問題。

將指定的$dir目錄,設為模塊的全局安裝目錄。如果當前有這個目錄的寫權限,那么運行npm install的時候,就不再需要sudo命令授權

$ npm config set prefix $dir

命令使得?npm install --save?和?npm install --save-dev?安裝新模塊時,允許的版本范圍從克拉符號(^)改成波浪號(~),即從允許小版本升級,變成只允許補丁包的升級。

$ npm config set save-prefix ~

命令指定使用?npm init?時,生成的?package.json?文件的字段默認值。

$ npm config set init.author.name $name $ npm config set init.author.email $email

設置代理示例:在公司內網,因為公司的防火墻原因,無法完成任何模塊的安裝時,可以執行下面命令

npm config set proxy=http://xxx

又如國內的網絡環境問題,某官方的 IP 可能被和諧了,幸好國內有好心人,搭建了鏡像,此時我們簡單設置鏡像

npm config set registry="http://r.cnpmjs.org"

也可以臨時配置,如安裝淘寶鏡像

npm install -g cnpm --registry=https://registry.npm.taobao.org

npm cache 管理模塊的緩存

基礎語法

npm cache add <tarball file> npm cache add <folder> npm cache add <tarball url> npm cache add <name>@<version>npm cache ls [<path>]npm cache clean [<path>]

最常用命令無非清除 npm 本地緩存:npm cache clean

npm start 啟動模塊

基礎語法:npm start [-- <args>]

該命令寫在 package.json 文件 scripts 的 start 字段中,可以自定義命令來配置一個服務器環境和安裝一系列的必要程序,如

"scripts": {"start": "gulp -ws" }

此時在 cmd 中輸入 npm start 命令相當于執行 gulpfile.js 文件自定義的 watch 和 server 命令。

如果 package.json 文件沒有設置 start,則將直接啟動 node server.js

npm stop 停止模塊

基礎語法:npm stop [-- <args>]

npm restart 重新啟動模塊

基礎語法:npm restart [-- <args>]

npm test 測試模塊

基礎語法

npm test [-- <args>] npm tst [-- <args>]

該命令寫在 package.json 文件 scripts 的 test 字段中,可以自定義該命令來執行一些操作,如

"scripts": {"test": "gulp release" },

此時在 cmd 中輸入 npm test 命令相當于執行 gulpfile.js 文件自定義的 release 命令。

npm version 查看模塊版本

基礎語法

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]npm [-v | --version] to print npm version npm view <pkg> version to view a package's published version npm ls to inspect current package/dependency versions

查看模塊的版本:npm version

npm view 查看模塊的注冊信息

基礎語法 npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...] aliases: info, show, vnpm view gulp dependencies 查看模塊 gulp 的依賴關系 npm view gulp repository.url 查看模塊 gulp 的源文件地址 npm view npm contributors 查看模塊 npm 的貢獻者,包含郵箱地址

npm?adduser 用戶登錄

基礎語法:npm adduser [--registry=url] [--scope=@orgname] [--always-auth]

發布模板到 npm 社區前需要先登錄,然后再進入發布的操作

npm publish?發布模塊

基礎語法

npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>]Publishes '.' if no argument supplied Sets tag 'latest' if no --tag specified

npm access?在發布的包上設置訪問級別

基礎語法

npm access public [<package>] npm access restricted [<package>]npm access grant <read-only|read-write> <scope:team> [<package>] npm access revoke <scope:team> [<package>]npm access ls-packages [<user>|<scope>|<scope:team>] npm access ls-collaborators [<package> [<user>]] npm access edit [<package>]

npm set?用來設置環境變量

npm set?用來設置環境變量

$ npm set init-author-name 'Your name' $ npm set init-author-email 'Your email' $ npm set init-author-url 'http://yourdomain.com' $ npm set init-license 'MIT'

上面命令等于為?npm init?設置了默認值,以后執行?npm init?的時候,package.json 的作者姓名、郵件、主頁、許可證字段就會自動寫入預設的值。這些信息會存放在用戶主目錄的 ~/.npmrc文件,使得用戶不用每個項目都輸入。如果某個項目有不同的設置,可以針對該項目運行?npm config。

$ npm set save-exact true

上面命令設置加入模塊時,package.json?將記錄模塊的確切版本,而不是一個可選的版本范圍。

npm info?查看模塊信息

npm info?命令可以查看每個模塊的具體信息。比如,查看 underscore 模塊的信息。

$ npm info underscore { name: 'underscore',description: 'JavaScript\'s functional programming helper library.','dist-tags': { latest: '1.5.2', stable: '1.5.2' },repository:{ type: 'git',url: 'git://github.com/jashkenas/underscore.git' },homepage: 'http://underscorejs.org',main: 'underscore.js',version: '1.5.2',devDependencies: { phantomjs: '1.9.0-1' },licenses:{ type: 'MIT',url: 'https://raw.github.com/jashkenas/underscore/master/LICENSE' },files:[ 'underscore.js','underscore-min.js','LICENSE' ],readmeFilename: 'README.md'}

上面命令返回一個 JavaScript 對象,包含了 underscore 模塊的詳細信息。這個對象的每個成員,都可以直接從 info 命令查詢。

$ npm info underscore description JavaScript's functional programming helper library.$ npm info underscore homepage http://underscorejs.org$ npm info underscore version 1.5.2

npm search?搜索 npm 倉庫

npm search?命令用于搜索 npm 倉庫,它后面可以跟字符串,也可以跟正則表達式。

$ npm search <搜索詞>$ npm search node-gyp // NAME DESCRIPTION // autogypi Autogypi handles dependencies for node-gyp projects. // grunt-node-gyp Run node-gyp commands from Grunt. // gyp-io Temporary solution to let node-gyp run `rebuild` under… // ...

npm list?列出安裝的模塊

npm list?命令以樹形結構列出當前項目安裝的所有模塊,以及它們依賴的模塊。

基礎語法npm ls [[<@scope>/]<pkg> ...]aliases: list, la, ll$ npm list # 注意:這個是列出本地( 即當前目錄 )安裝的模塊 $?npm?list -global # 加上 global 參數,會列出全局安裝的模塊 $ npm ls -g # 查看全局安裝的模塊及依賴? $?npm?list underscore # npm list 命令也可以列出單個模塊

npm install?( 本地安裝、全局安裝?)

npm 安裝包的命令格式:npm [install/i] [package_name]

基礎語法: npm install (with no args, in package dir) npm install [<@scope>/]<name> npm install [<@scope>/]<name>@<tag> npm install [<@scope>/]<name>@<version> npm install [<@scope>/]<name>@<version range> npm install <tarball file> npm install <tarball url> npm install <folder> alias: npm i common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [--dry-run]

Node 模塊采用?npm install?命令安裝,每個模塊可以 “全局安裝”,也可以 “本地安裝”。“全局安裝” 指的是將一個模塊安裝到系統目錄中,各個項目都可以調用。

一般來說,

  • 全局安裝 只適用于工具模塊,比如?eslint?和?gulp。
  • 本地安裝?指的是將一個模塊下載到當前項目的?node_modules子目錄,然后只有在項目目錄之中,才能調用這個模塊。(?本地模式不會注冊 PATH 環境變量

關于使用全局模式,多數時候并不是因為許多程序都有可能用到了它,而是為了減少多重副本才使用全局模式。同時?本地模式不會注冊 PATH 環境變量。

本地模式全局模式 的特點如下:

模式可通過 require 使用注冊 PATH
本地模式
全局模式

本地模式?和?全局模式

npm 在默認情況下會從?http://npmjs.org?搜索或下載包,將包安裝到當前目錄的 node_modules 子目錄下。

如果你熟悉 Ruby 的 gem 或者 Python 的 pip,你會發現 npm 與它們的行為不同,

  • gem 或 pip 總是以 全局模式 安裝,使包可以供所有的程序使用,
  • npm 默認會把包安裝到當前目錄下,即?本地安裝?或者 本地模式。"本地安裝" 指的是將一個模塊下載到當前項目的 node_modules 子目錄,然后只有在項目目錄之中,才能調用這個模塊。這反映了 npm 不同的設計哲學:如果把包安裝到全局,可以提供程序的重復利用程度,避免同樣的內容的多分副本,但壞處是難以處理不同的版本依賴。如果把包安裝到當前目錄,或者說本地,則不會有不同程序依賴不同版本的包的沖突問題,同時還減輕了包作者的 API 兼容性壓力,但缺陷則是同一個包可能會被安裝許多次。

例如:如果安裝?supervisor 的時候使用了?npm install -g supervisor?命令,就是以全局模式安裝 supervisor 。這里注意一點的就是,supervisor 必須安裝到全局,如果你不安裝到全局,錯誤命令會提示你安裝到全局。如果不想安裝到默認的全局,也可以自己修改全局路徑到當前路徑?npm config set prefix "路徑"?安裝完以后就可以用 supervisor 來啟動服務了。supervisor 可以幫助你實現這個功能,它會監視你對代碼的驅動,并自動重啟 Node.js 。

# 本地安裝(local) $ npm install <package name># 全局安裝(global),使用 -g 或 --global $?sudo?npm?install?-global?<package name> $?sudo?npm?install?-g?<package name>npm install 也支持直接輸入 Github 代碼庫地址。 $ npm install git://github.com/package/path.git $ npm install git://github.com/package/path.git#0.1.0

安裝之前,npm install 會先檢查,node_modules?目錄之中是否已經存在指定模塊。如果存在,就不再重新安裝了,即使遠程倉庫已經有了一個新版本,也是如此。

# 如果你希望,一個模塊不管是否安裝過, npm 都要強制重新安裝,可以使用 -f 或 --force 參數。 $ npm install <packageName> --force# 如果你希望,所有模塊都要強制重新安裝,那就刪除node_modules目錄,重新執行npm install。 $ rm -rf node_modules $ npm install

安裝不同版本

  • nmp install 命令總是安裝模塊的最新版本,
  • 如果要安裝模塊的特定版本,可以在模塊名后面加上 @ 版本號
$ npm install sax@latest $ npm install sax@0.1.1 # 安裝指定版本 $ npm install sax@">=0.1.0 <0.2.0"

如果使用 --save-exact 參數,會在 package.json 文件指定安裝模塊的確切版本。

$ npm install readable-stream --save --save-exact

使用 npm install 安裝模塊的模塊的時候 ,一般會使用下面這幾種命令形式:

  • npm install moduleName? ? ? ? # 安裝模塊到項目目錄下
  • npm install -g moduleName? ? ? # -g 的意思是將模塊安裝到全局,具體安裝到磁盤哪個位置,要看 npm config prefix 的位置。
  • npm install -save moduleName? ? ? # -save 的意思是將模塊安裝到項目目錄下,并在package文件的dependencies節點寫入依賴。
  • npm install -save-dev moduleName? ? ?# -save-dev 的意思是將模塊安裝到項目目錄下,并在package文件的devDependencies節點寫入依賴。

下面對這四個命令進行對比,看完后你就不再這么問了。

npm install moduleName 命令

1. 安裝模塊到項目node_modules目錄下。
2. 不會將模塊依賴寫入devDependencies或dependencies 節點。
3. 運行 npm install 初始化項目時不會下載模塊。

npm install -g moduleName 命令

1. 安裝模塊到全局,不會在項目node_modules目錄中保存模塊包。
2. 不會將模塊依賴寫入devDependencies或dependencies 節點。
3. 運行 npm install 初始化項目時不會下載模塊。

npm install -save moduleName 命令

1. 安裝模塊到項目node_modules目錄下。
2. 會將模塊依賴寫入dependencies 節點。
3. 運行 npm install 初始化項目時,會將模塊下載到項目目錄下。
4. 運行npm install --production或者注明NODE_ENV變量值為production時,自動下載模塊到node_modules目錄中。

npm install -save-dev moduleName 命令

1. 安裝模塊到項目node_modules目錄下。
2. 會將模塊依賴寫入devDependencies 節點。
3. 運行 npm install 初始化項目時,會將模塊下載到項目目錄下。
4. 運行npm install --production或者注明NODE_ENV變量值為production時,不會自動下載模塊到node_modules目錄中。

總結

devDependencies 節點下的模塊是我們在開發時需要用的,比如項目中使用的 gulp ,壓縮css、js的模塊。這些模塊在我們的項目部署后是不需要的,所以我們可以使用 -save-dev 的形式安裝。像 express 這些模塊是項目運行必備的,應該安裝在 dependencies 節點下,所以我們應該使用 -save 的形式安裝。

--save、--save-dev、--save-optional、--save-exact

--save 和 --save-dev

  • --save 會把依賴包名稱添加到 package.json 文件 dependencies 鍵下,dependencies 是運行時依賴,
  • --save-dev 則添加到 package.json 文件 devDependencies 鍵下,devDependencies 是開發時的依賴。即 devDependencies 下列出的模塊,是開發時用的

?比如,我們安裝 js的壓縮包 gulp-uglify 時,我們采用的是 “npm install --save-dev gulp-uglify ”命令安裝,因為我們在發布后用不到它,而只是在我們開發才用到它。dependencies 下的模塊,則是我們發布后還需要依賴的模塊,譬如像 jQuery庫或者 Angular 框架類似的,我們在開發完后后肯定還要依賴它們,否則就運行不了。

install 命令可以使用不同參數,指定所安裝的模塊屬于哪一種性質的依賴關系,即出現在 packages.json 文件的哪一項中。

--save:模塊名將被添加到 dependencies,可以簡化為參數 -S。?
--save-dev:模塊名將被添加到 devDependencies,可以簡化為參數 -D 。

$ npm install sax --save? ? ? ? ? ? ? ? ? ? ? # 或者? npm install sax -S
$ npm install node-tap --save-dev? ? ? # 或者? npm install node-tap -D

-S, --save 安裝包信息將加入到dependencies(生產階段的依賴)。示例:npm install gulp --savenpm install gulp -S

package.json 文件的 dependencies 字段:

"dependencies": {"gulp": "^3.9.1" }

-D, --save-dev 安裝包信息將加入到devDependencies(開發階段的依賴),所以開發階段一般使用它。

示例:npm install gulp --save-devnpm install gulp -D? ,package.json 文件的 devDependencies字段:

"devDependencies": {"gulp": "^3.9.1" }

-O, --save-optional 安裝包信息將加入到 optionalDependencies(可選階段的依賴)。

示例:npm install gulp --save-optionalnpm install gulp -O?,package.json 文件的 optionalDependencies 字段:

"optionalDependencies": {"gulp": "^3.9.1" }

-E, --save-exact 精確安裝指定模塊版本。npm install gulp --save-exactnpm install gulp -E?

輸入命令 npm install gulp -ES,留意 package.json 文件的 dependencies 字段,以看出版本號中的^消失了

"dependencies": {"gulp": "3.9.1" }

模塊的依賴都被寫入了 package.json 文件后,他人打開項目的根目錄(項目開源、內部團隊合作),使用 npm install 命令可以根據 dependencies 配置安裝所有的依賴包

安裝 beta 版本的模塊

如果要安裝 beta 版本的模塊,需要使用下面的命令。

# 安裝最新的beta版 $ npm install <module-name>@beta (latest beta)# 安裝指定的beta版 $ npm install <module-name>@1.3.1-beta.3

npm install?默認會安裝?dependencies?字段和?devDependencies?字段中的所有模塊,如果使用?--production?參數,可以只安裝?dependencies?字段的模塊。

$ npm install --production # 或者 $ NODE_ENV=production npm install

一旦安裝了某個模塊,就可以在代碼中用?require?命令加載這個模塊。

var backbone = require('backbone') console.log(backbone.VERSION)

npm uninstall?卸載模塊?

npm uninstall命令,卸載已安裝的模塊。

基礎語法 npm uninstall [<@scope>/]<pkg>[@<version>]... [-S|--save|-D|--save-dev|-O|--save-optional]$ npm uninstall [package name] aliases: remove, rm, r, un, unlink# 卸載全局模塊 $ npm uninstall [package name] -global如卸載開發版本的模塊 $ npm uninstall gulp --save-dev

npm update?更新模塊

npm update?命令可以更新本地安裝的模塊。基礎語法:npm update [-g] [<pkg>...]

# 升級當前項目的指定模塊 $ npm update [package name]# 升級全局安裝的模塊 $ npm update -global [package name]

它會先到遠程倉庫查詢最新版本,然后查詢本地版本。如果本地版本不存在,或者遠程版本較新,就會安裝。

使用?-S?或?--save?參數,可以在安裝的時候更新?package.json?里面模塊的版本號。

// 更新之前的package.json dependencies: {dep1: "^1.1.1" }// 更新之后的package.json dependencies: {dep1: "^1.2.2" }

注意,從 npm v2.6.1 開始,npm update?只更新頂層模塊,而不更新依賴的依賴,以前版本是遞歸更新的。如果想取到老版本的效果,要使用下面的命令。

$ npm --depth 9999 update

npm outdated?檢查模塊是否已經過時

基礎語法:npm outdated [[<@scope>/]<pkg> ...]

此命令會列出所有已經過時的包,可以及時進行包的更新

避免系統權限

默認情況下,Npm 全局模塊都安裝在系統目錄(比如/usr/local/lib/),普通用戶沒有寫入權限,需要用到sudo命令。這不是很方便,我們可以在沒有root權限的情況下,安裝全局模塊。

首先,在主目錄下新建配置文件.npmrc,然后在該文件中將?prefix?變量定義到主目錄下面。

prefix = /home/yourUsername/npm

然后在主目錄下新建?npm?子目錄。

$ mkdir ~/npm

此后,全局安裝的模塊都會安裝在這個子目錄中,npm也會到~/npm/bin目錄去尋找命令。最后,將這個路徑在.bash_profile文件(或.bashrc文件)中加入PATH變量。

export PATH=~/npm/bin:$PATH

npm run

npm?不僅可以用于模塊管理,還可以用于執行腳本。package.json?文件有一個?scripts?字段,可以用于指定腳本命令,供?npm?直接調用。

{"name": "myproject","devDependencies": {"jshint": "latest","browserify": "latest","mocha": "latest"},"scripts": {"lint": "jshint **.js","test": "mocha test/"} }

上面代碼中,scripts?字段指定了兩項命令?lint?和?test。

命令行輸入?npm run-script lint?或者?npm run lint,就會執行?jshint **.js,輸入?npm run-script test?或者?npm run test,就會執行?mocha test/。

  • npm run?是?npm run-script?的縮寫,一般都使用前者,但是后者可以更好地反應這個命令的本質。
  • npm run?命令會自動在環境變量?$PATH?添加?node_modules/.bin?目錄,所以?scripts?字段里面調用命令時不用加上路徑,這就避免了全局安裝NPM模塊。
  • npm run?如果不加任何參數,直接運行,會列出?package.json?里面所有可以執行的腳本命令。
  • npm 內置了兩個命令簡寫,npm test等同于執行?npm run test,npm start?等同于執行npm run start。
  • npm run?會創建一個 Shell,執行指定的命令,并臨時將?node_modules/.bin?加入 PATH 變量,這意味著本地模塊可以直接運行。

比如:執行 ESLint 的安裝命令:$ npm i eslint --save-dev?后,會產生兩個結果。

  • 首先,ESLint 被安裝到當前目錄的?node_modules?子目錄;
  • 其次,node_modules/.bin?目錄會生成一個符號鏈接?node_modules/.bin/eslint,指向 ESLint 模塊的可執行腳本。
  • 然后,你就可以在?package.json?的?script?屬性里面,不帶路徑的引用?eslint?這個腳本。
{"name": "Test Project","devDependencies": {"eslint": "^1.10.3"},"scripts": {"lint": "eslint ."} }

等到運行?npm run lint?的時候,它會自動執行?./node_modules/.bin/eslint 。如果直接運行?npm run?不給出任何參數,就會列出?scripts?屬性下所有命令。

$ npm run Available scripts in the user-service package:lintjshint **.jstestmocha test/

下面是另一個?package.json?文件的例子。

"scripts": {"watch": "watchify client/main.js -o public/app.js -v","build": "browserify client/main.js -o public/app.js","start": "npm run watch & nodemon server.js","test": "node test/all.js" },

上面代碼在?scripts?項,定義了四個別名,每個別名都有對應的腳本命令。

$ npm run watch $ npm run build $ npm run start $ npm run test

其中,start?和?test?屬于特殊命令,可以省略?run。

$ npm start $ npm test

如果希望一個操作的輸出,是另一個操作的輸入,可以借用 Linux 系統的管道命令,將兩個操作連在一起。

"build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"

但是,更方便的寫法是引用其他?npm run?命令。

"build": "npm run build-js && npm run build-css"

上面的寫法是先運行?npm run build-js,然后再運行?npm run build-css,兩個命令中間用?&&?連接。如果希望兩個命令同時平行執行,它們中間可以用?&?連接。

下面是一個流操作的例子。

"devDependencies": {"autoprefixer": "latest","cssmin": "latest" },"scripts": {"build:css": "autoprefixer -b 'last 2 versions' < assets/styles/main.css | cssmin > dist/main.css" }

寫在?scripts?屬性中的命令,也可以在?node_modules/.bin?目錄中直接寫成bash腳本。下面是一個 bash 腳本。

#!/bin/bashcd site/main browserify browser/main.js | uglifyjs -mc > static/bundle.js

假定上面的腳本文件名為 build.sh,并且權限為可執行,就可以在 scripts 屬性中引用該文件。

"build-js": "bin/build.sh"

npm run 添加參數

npm run?命令還可以添加參數。

"scripts": {"test": "mocha test/" }

上面代碼指定?npm test,實際運行?mocha test/。如果要通過?npm test?命令,將參數傳到 mocha,則參數之前要加上兩個連詞線。

$ npm run test -- anothertest.js # 等同于 $ mocha test/ anothertest.js

上面命令表示,mocha 要運行所有test子目錄的測試腳本,以及另外一個測試腳本anothertest.js。

npm run本身有一個參數-s,表示關閉npm本身的輸出,只輸出腳本產生的結果。

// 輸出npm命令頭 $ npm run test// 不輸出npm命令頭 $ npm run -s test

scripts 腳本命令最佳實踐

scripts字段的腳本命令,有一些最佳實踐,可以方便開發。首先,安裝npm-run-all模塊。

$ npm install npm-run-all --save-dev

這個模塊用于運行多個scripts腳本命令。

# 繼發執行 $ npm-run-all build:html build:js # 等同于 $ npm run build:html && npm run build:js# 并行執行 $ npm-run-all --parallel watch:html watch:js # 等同于 $ npm run watch:html & npm run watch:js# 混合執行 $ npm-run-all clean lint --parallel watch:html watch:js # 等同于 $ npm-run-all clean lint $ npm-run-all --parallel watch:html watch:js# 通配符 $ npm-run-all --parallel watch:*

(1)start 腳本命令

? ? start?腳本命令,用于啟動應用程序:"start": "npm-run-all --parallel dev serve"
? ? 上面命令并行執行?dev?腳本命令和?serve?腳本命令,等同于:$ npm run dev & npm run serve
? ? 如果 start 腳本沒有配置,npm start?命令默認執行下面的腳本,前提是模塊的根目錄存在一個 server.js 文件:$ node server.js

(2)dev 腳本命令

? ? dev腳本命令,規定開發階段所要做的處理,比如構建網頁資源。:"dev": "npm-run-all dev:*"
? ? 上面命令用于繼發執行所有dev的子命令。
? ? :"predev:sass": "node-sass --source-map src/css/hoodie.css.map --output-style nested src/sass/base.scss src/css/hoodie.css"
? ? 上面命令將 sass 文件編譯為 css 文件,并生成 source map文件。
? ? :"dev:sass": "node-sass --source-map src/css/hoodie.css.map --watch --output-style nested src/sass/base.scss src/css/hoodie.css"
? ? 上面命令會監視sass文件的變動,只要有變動,就自動將其編譯為css文件。
? ? :"dev:autoprefix": "postcss --use autoprefixer --autoprefixer.browsers \"> 5%\" --output src/css/hoodie.css src/css/hoodie.css"
? ? 上面命令為css文件加上瀏覽器前綴,限制條件是只考慮市場份額大于5%的瀏覽器。

(3)serve 腳本命令

serve腳本命令用于啟動服務。:"serve": "live-server dist/ --port=9090"

上面命令啟動服務,用的是?live-server?模塊,將服務啟動在9090端口,展示dist子目錄。

live-server模塊有三個功能。

  • 啟動一個HTTP服務器,展示指定目錄的index.html文件,通過該文件加載各種網絡資源,這是file://協議做不到的。
  • 添加自動刷新功能。只要指定目錄之中,文件有任何變化,它就會刷新頁面。
  • npm run serve命令執行以后,自動打開瀏覽器。、

以前,上面三個功能需要三個模塊來完成:http-server、live-reload和opener,現在只要live-server一個模塊就夠了。

(4)test 腳本命令

test?腳本命令用于執行測試。

"test": "npm-run-all test:*", "test:lint": "sass-lint --verbose --config .sass-lint.yml src/sass/*"

上面命令規定,執行測試時,運行lint腳本,檢查腳本之中的語法錯誤。

(5)prod 腳本命令

prod?腳本命令,規定進入生產環境時需要做的處理。

"prod": "npm-run-all prod:*", "prod:sass": "node-sass --output-style compressed src/sass/base.scss src/css/prod/hoodie.min.css", "prod:autoprefix": "postcss --use autoprefixer --autoprefixer.browsers "> 5%" --output src/css/prod/hoodie.min.css src/css/prod/hoodie.min.css"

上面命令將sass文件轉為css文件,并加上瀏覽器前綴。

(6)help 腳本命令

help?腳本命令用于展示幫助信息。

"help": "markdown-chalk --input DEVELOPMENT.md"

上面命令之中,markdown-chalk模塊用于將指定的markdown文件,轉為彩色文本顯示在終端之中。

(7)docs 腳本命令

docs腳本命令用于生成文檔。

"docs": "kss-node --source src/sass --homepage ../../styleguide.md"

上面命令使用?kss-node?模塊,提供源碼的注釋生成 markdown 格式的文檔。

pre- 和 post- 腳本

npm run?為每條命令提供了?pre-?和?post-?兩個鉤子(hook)。以?npm run lint?為例,執行這條命令之前,npm 會先查看有沒有定義 prelint 和 postlint 兩個鉤子,如果有的話,就會先執行?npm run prelint,然后執行?npm run lint,最后執行?npm run postlint。

{"name": "myproject","devDependencies": {"eslint": "latest""karma": "latest"},"scripts": {"lint": "eslint --cache --ext .js --ext .jsx src","test": "karma start --log-leve=error karma.config.js --single-run=true","pretest": "npm run lint","posttest": "echo 'Finished running tests'"} }

上面代碼是一個?package.json?文件的例子。如果執行?npm test,會按下面的順序執行相應的命令。

  • pretest
  • test
  • posttest
  • 如果執行過程出錯,就不會執行排在后面的腳本,即如果 prelint 腳本執行出錯,就不會接著執行 lint 和 postlint 腳本。

    下面是一個例子。

    {"test": "karma start","test:lint": "eslint . --ext .js --ext .jsx","pretest": "npm run test:lint" }

    上面代碼中,在運行?npm run test?之前,會自動檢查代碼,即運行?npm run test:lint?命令。

    下面是一些常見的?pre-?和?post-?腳本。

    • prepublish:發布一個模塊前執行。
    • postpublish:發布一個模塊后執行。
    • preinstall:用戶執行npm install命令時,先執行該腳本。
    • postinstall:用戶執行npm install命令時,安裝結束后執行該腳本,通常用于將下載的源碼編譯成用戶需要的格式,比如有些模塊需要在用戶機器上跟本地的C++模塊一起編譯。
    • preuninstall:卸載一個模塊前執行。
    • postuninstall:卸載一個模塊后執行。
    • preversion:更改模塊版本前執行。
    • postversion:更改模塊版本后執行。
    • pretest:運行npm test命令前執行。
    • posttest:運行npm test命令后執行。
    • prestop:運行npm stop命令前執行。
    • poststop:運行npm stop命令后執行。
    • prestart:運行npm start命令前執行。
    • poststart:運行npm start命令后執行。
    • prerestart:運行npm restart命令前執行。
    • postrestart:運行npm restart命令后執行。

    對于最后一個?npm restart?命令,如果沒有設置?restart?腳本,prerestart?和?postrestart?會依次執行 stop 和 start 腳本。

    另外,不能在?pre?腳本之前再加?pre,即?prepretest?腳本不起作用。

    注意,即使 Npm 可以自動運行?pre?和?post?腳本,也可以手動執行它們。

    $ npm run prepublish

    下面是?post install?的例子。

    {"postinstall": "node lib/post_install.js" }

    上面的這個命令,主要用于處理從Git倉庫拉下來的源碼。比如,有些源碼是用TypeScript寫的,可能需要轉換一下。

    下面是?publish?鉤子的一個例子。

    {"dist:modules": "babel ./src --out-dir ./dist-modules","gh-pages": "webpack","gh-pages:deploy": "gh-pages -d gh-pages","prepublish": "npm run dist:modules","postpublish": "npm run gh-pages && npm run gh-pages:deploy" }

    上面命令在運行?npm run publish?時,會先執行 Babel 編譯,然后調用 Webpack 構建,最后發到 Github Pages 上面。

    以上都是 npm 相關操作的鉤子,如果安裝某些模塊,還能支持Git相關的鉤子。下面以husky模塊為例。

    $ npm install husky --save-dev

    安裝以后,就能在package.json添加precommit、prepush等鉤子。

    {"scripts": {"lint": "eslint yourJsFiles.js","precommit": "npm run test && npm run lint","prepush": "npm run test && npm run lint","...": "..."} }

    類似作用的模塊還有pre-commit、precommit-hook等。

    內部變量

    scripts 字段可以使用一些內部變量,主要是 package.json 的各種字段。

    比如,package.json 的內容是{"name":"foo", "version":"1.2.5"},那么變量?npm_package_name?的值是 foo,變量?npm_package_version?的值是1.2.5。

    {"scripts":{"bundle": "mkdir -p build/$npm_package_version/"} }

    運行?npm run bundle?以后,將會生成?build/1.2.5/?子目錄。

    config?字段也可以用于設置內部字段。

    "name": "fooproject","config": {"reporter": "xunit"},"scripts": {"test": "mocha test/ --reporter $npm_package_config_reporter"}

    上面代碼中,變量?npm_package_config_reporter?對應的就是 reporter。

    通配符

    npm 的通配符的規則如下。

    • *? ? ? ? ? ? ?匹配0個或多個字符
    • ?? ? ? ? ? ? ?匹配1個字符
    • [...]? ? ? 匹配某個范圍的字符。如果該范圍的第一個字符是!或^,則匹配不在該范圍的字符。
    • !(pattern|pattern|pattern)? ? ?匹配任何不符合給定的模式
    • ?(pattern|pattern|pattern)? ? ?匹配0個或1個給定的模式
    • +(pattern|pattern|pattern)? ? ?匹配1個或多個給定的模式
    • *(a|b|c)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?匹配0個或多個給定的模式
    • @(pattern|pat*|pat?erN)? ? ? ? ? 只匹配給定模式之一
    • **? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果出現在路徑部分,表示0個或多個子目錄。

    npm 提供了一個有趣的命令?npm link,它的功能是在本地包和全局包之間創建符號鏈接。我們說過使用全局模式安裝的包不能直接通過?require?使用。但通過?npm link?命令可以打破這一限制。舉個例子,我們已經通過?npm install -g express?安裝了 express,這時在工程的目錄下運行命令:

    npm link express ./node_modules/express -> /user/local/lib/node_modules/express

    我們可以在?node_modules?子目錄中發現一個指向安裝到全局的包的符號鏈接。通過這種方法,我們就可以把全局包當做本地包來使用了。

    除了將全局的包鏈接到本地以外,使用 npm link 命令還可以將本地的包鏈接到全局。使用方法是在包目錄(package.json 所在目錄)中運行 npm link 命令。如果我們要開發一個包,利用這種方法可以非常方便地在不同的工程間進行測試。

    開發 NPM 模塊的時候,有時我們會希望,邊開發邊試用,比如本地調試的時候,require('myModule')會自動加載本機開發中的模塊。Node 規定,使用一個模塊時,需要將其安裝到全局的或項目的?node_modules?目錄之中。對于開發中的模塊,解決方法就是在全局的?node_modules?目錄之中,生成一個符號鏈接,指向模塊的本地目錄。npm link?就能起到這個作用,會自動建立這個符號鏈接。

    請設想這樣一個場景,你開發了一個模塊?myModule,目錄為?src/myModule,你自己的項目?myProject?要用到這個模塊,項目目錄為?src/myProject。首先,在模塊目錄(src/myModule)下運行?npm link?命令。

    src/myModule$ npm link

    上面的命令會在 NPM 的全局模塊目錄內,生成一個符號鏈接文件,該文件的名字就是?package.json?文件中指定的模塊名。

    /path/to/global/node_modules/myModule -> src/myModule

    這個時候,已經可以全局調用?myModule?模塊了。但是,如果我們要讓這個模塊安裝在項目內,還要進行下面的步驟。

    切換到項目目錄,再次運行?npm link?命令,并指定模塊名。

    src/myProject$ npm link myModule

    上面命令等同于生成了本地模塊的符號鏈接。

    src/myProject/node_modules/myModule -> /path/to/global/node_modules/myModule

    然后,就可以在你的項目中,加載該模塊了。

    var myModule = require('myModule');

    這樣一來,myModule?的任何變化,都可以直接反映在?myProject?項目之中。但是,這樣也出現了風險,任何在?myProject?目錄中對?myModule?的修改,都會反映到模塊的源碼中。

    如果你的項目不再需要該模塊,可以在項目目錄內使用?npm unlink?命令,刪除符號鏈接。

    src/myProject$ npm unlink myModule

    npm bin

    npm bin命令顯示相對于當前目錄的,Node 模塊的可執行腳本所在的目錄(即.bin目錄)。

    # 項目根目錄下執行 $ npm bin ./node_modules/.bin

    npm adduser

    npm adduser?用于在 npmjs.com 注冊一個用戶。

    $ npm adduser Username: YOUR_USER_NAME Password: YOUR_PASSWORD Email: YOUR_EMAIL@domain.com

    npm publish

    npm publish?用于將當前模塊發布到?npmjs.com。執行之前,需要向?npmjs.com?申請用戶名。

    $ npm adduser

    如果已經注冊過,就使用下面的命令登錄。

    $ npm login

    登錄以后,就可以使用?npm publish?命令發布。

    $ npm publish

    如果當前模塊是一個beta版,比如1.3.1-beta.3,那么發布的時候需要使用tag參數,將其發布到指定標簽,默認的發布標簽是latest。

    $ npm publish --tag beta

    如果發布私有模塊,模塊初始化的時候,需要加上scope參數。只有npm的付費用戶才能發布私有模塊。

    $ npm init --scope=<yourscope>

    如果你的模塊是用ES6寫的,那么發布的時候,最好轉成ES5。首先,需要安裝Babel。

    $ npm install --save-dev babel-cli@6 babel-preset-es2015@6

    然后,在package.json里面寫入build腳本。

    "scripts": {"build": "babel source --presets babel-preset-es2015 --out-dir distribution","prepublish": "npm run build" }

    運行上面的腳本,會將source目錄里面的ES6源碼文件,轉為distribution目錄里面的ES5源碼文件。然后,在項目根目錄下面創建兩個文件.npmignore和.gitignore,分別寫入以下內容。

    // .npmignore source// .gitignore node_modules distribution

    npm deprecate

    如果想廢棄某個版本的模塊,可以使用?npm deprecate?命令。

    $ npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"

    運行上面的命令以后,小于0.2.3版本的模塊的?package.json?都會寫入一行警告,用戶安裝這些版本時,這行警告就會在命令行顯示。

    npm owner

    模塊的維護者可以發布新版本。npm owner?命令用于管理模塊的維護者。

    # 列出指定模塊的維護者 $ npm owner ls <package name># 新增維護者 $ npm owner add <user> <package name># 刪除維護者 $ npm owner rm <user> <package name>

    其他命令

    npm home,npm repo

    npm home?命令可以打開一個模塊的主頁,npm repo?命令則是打開一個模塊的代碼倉庫。

    $ npm home $package $ npm repo $package

    這兩個命令不需要模塊先安裝。

    npm outdated

    npm outdated?命令檢查當前項目所依賴的模塊,是否已經有新版本。

    $ npm outdated

    它會輸出當前版本(current version)、應當安裝的版本(wanted version)和最新發布的版本(latest version)。

    npm prune

    npm prune檢查當前項目的?node_modules?目錄中,是否有?package.json?里面沒有提到的模塊,然后將所有這些模塊輸出在命令行。

    $ npm prune

    npm shrinkwrap

    npm shrinkwrap的作用是鎖定當前項目的依賴模塊的版本。

    $ npm shrinkwrap

    運行該命令后,會在當前項目的根目錄下生成一個npm-shrinkwrap.json文件,內容是node_modules目錄下所有已經安裝的模塊,以及它們的精確版本。

    下次運行npm install命令時,npm發現當前目錄下有npm-shrinkwrap.json文件,就會只安裝里面提到的模塊,且版本也會保持一致。

    dependencies 依賴

    這個可以說是我們 npm 核心一項內容,依賴管理,這個對象里面的內容就是我們這個項目所依賴的 js 模塊包。下面這段代碼表示我們依賴了?markdown-it?這個包,版本是?^8.1.0?,代表最小依賴版本是?8.1.0?,如果這個包有更新,那么當我們使用?npm install?命令的時候,npm 會幫我們下載最新的包。當別人引用我們這個包的時候,包內的依賴包也會被下載下來。

    "dependencies": {"markdown-it": "^8.1.0" }

    devDependencies 開發依賴

    在我們開發的時候會用到的一些包,只是在開發環境中需要用到,但是在別人引用我們包的時候,不會用到這些內容,放在 devDependencies 的包,在別人引用的時候不會被 npm 下載。

    "devDependencies": {"autoprefixer": "^6.4.0",0","babel-preset-es2015": "^6.0.0","babel-preset-stage-2": "^6.0.0","babel-register": "^6.0.0","webpack": "^1.13.2","webpack-dev-middleware": "^1.8.3","webpack-hot-middleware": "^2.12.2","webpack-merge": "^0.14.1","highlightjs": "^9.8.0" }

    當你有了一個完整的 package.json 文件的時候,就可以讓人一眼看出來,這個模塊的基本信息,和這個模塊所需要依賴的包。我們可以通過 npm install 就可以很方便的下載好這個模塊所需要的包。

    npm install?默認會安裝 dependencies 字段和 devDependencies 字段中的所有模塊,如果使用?--production?參數,可以只安裝 dependencies 字段的模塊。

    $ npm install --production # 或者 $ NODE_ENV=production npm install

    一旦安裝了某個模塊,就可以在代碼中用 require 命令加載這個模塊。

    var backbone = require('backbone') console.log(backbone.VERSION)

    # 項目根目錄下執行 $ npm bin ./node_modules/.bin

    創建包

    包是在模塊基礎上更深一步的抽象,Node.js 的包類似于 C/C++ 的函數庫或者 Java、.Net 的類庫。它將某個獨立的功能封裝起來,用于發布、更新、依賴管理和版本控制。Node.js 根據 CommonJS 規范實現了包機制,開發了 npm 來解決包的發布和獲取需求。
    Node.js 的包是一個目錄,其中包含了一個 JSON 格式的包說明文件 package.json。嚴格符合 CommonJS 規范的包應該具備以下特征:

    • package.json 必須在包的頂層目錄下;
    • 二進制文件應該在 bin 目錄下;
    • JavaScript 代碼應該在 lib 目錄下;
    • 文檔應該在 doc 目錄下;
    • 單元測試應該在 test 目錄下。

    Node.js 對包的要求并沒有這么嚴格,只要頂層目錄下有 package.json,并符合一些規范即可。當然為了提高兼容性,我們還是建議你在制作包的時候,嚴格遵守 CommonJS 規范。

    我們也可以把文件夾封裝為一個模塊,即所謂的包。包通常是一些模塊的集合,在模塊的基礎上提供了更高層的抽象,相當于提供了一些固定接口的函數庫。通過定制 package.json,我們可以創建更復雜,更完善,更符合規范的包用于發布。

    Node.js 在調用某個包時,會首先檢查包中 packgage.json 文件的 main 字段,將其作為包的接口模塊,如果 package.json 或 main 字段不存在,會嘗試尋找 index.js 或 index.node 作為包的接口。

    npm package.json 的語法

    英文原版:https://docs.npmjs.com/files/package.json

    這塊內容好多,國內有好心人整理:《npm的package.json中文文檔》,從這份文檔拷貝出一些比較常見的,如下:

    默認值

    npm 會根據包內容設置一些默認值。

    • "scripts": {"start": "node server.js"}

      如果包的根目錄有server.js文件,npm會默認將start命令設置為node server.js。

    • "scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}

      如果包的根目錄有wscript文件,npm會默認將preinstall命令用node-waf進行編譯。

    • "scripts":{"preinstall": "node-gyp rebuild"}

      如果包的根目錄有binding.gyp文件,npm會默認將preinstall命令用node-gyp進行編譯。

    • "contributors": [...]

      如果包的根目錄有AUTHORS文件,npm會默認逐行按Name <email> (url)格式處理,郵箱和url是可選的。#號和空格開頭的行會被忽略。

    package.json 是 CommonJS 規定的用來描述包的文件,完全符合規范的 package.json 文件應該含有以下字段:

    • name:? 包的名字,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含空格。
    • description:? 包的簡要說明。放簡介,字符串,方便在npm search中搜索
    • version:? 符合語義化版本識別規范的版本字符串。version 必須能被?node-semver?解析,它被包在npm的依賴中。(要自己用可以執行npm install semver

      可用的“數字”或者“范圍”見semver(7).

    • keywords:? 關鍵字,數組、字符串,通常用于搜索。方便在npm search中搜索
    • maintainers:? 維護者數組,每個元素要包含 name 、email(可選)、web(可選)字段。
    • contributors:? 貢獻者數組,格式與 maintainers 相同。包的作者應該是貢獻者數組的第一個元素。
    • bugs:? 提交 bug 的地址,可以是網址或者電子郵件地址。
    • licenses:? 許可證數組,每個元素要包含 type(許可證的名稱)和 url(鏈接到許可證文本的地址)字段。
    • repositories:? 倉庫托管地址數組,每個元素要包含 type(倉庫的類型,如 git)、URL(倉庫的地址)和 path(相對于倉庫的路徑,可選)字段。
    • dependencies:? 包的依賴,一個關聯數組,由包名稱和版本號組成。依賴是給一組包名指定版本范圍的一個hash。這個版本范圍是一個由一個或多個空格分隔的字符串。依賴還可以用tarball或者git URL。請不要將測試或過渡性的依賴放在dependencieshash中。見下文的devDependencies
    • scripts:?“scripts” 是一個由腳本命令組成的hash對象,他們在包不同的生命周期中被執行。key是生命周期事件,value是要運行的命令。參考上面的npm startnpm test命令。更多詳細請看?npm-scripts(7)
    • config:"config" hash可以用來配置用于包腳本中的跨版本參數。在實例中,如果一個包有下面的配置:{ "name" : "foo", "config" : { "port" : "8080" } },然后有一個 “start” 命令引用了?npm_package_config_port?環境變量,用戶可以通過?npm config set foo:port 8001?來重寫他。

      參見?npm-config(7)?和?npm-scripts(7)。

    需要說明的是json 文件不能有注釋

    在 package.json 中最重要的就是 name 和 version 字段。他們都是必須的,如果沒有就無法 install。name 和 version 一起組成的標識在假設中是唯一的。改變包應該同時改變version。

    name是這個東西的名字。注意:

    • 不要把node或者js放在名字中。因為你寫了package.json它就被假定成為了js,不過你可以用"engine"字段指定一個引擎(見后文)。
    • 這個名字會作為在URL的一部分、命令行的參數或者文件夾的名字。任何non-url-safe的字符都是不能用的。
    • 這個名字可能會作為參數被傳入require(),所以它應該比較短,但也要意義清晰。
    • 在你愛上你的名字之前,你可能要去npm registry查看一下這個名字是否已經被使用了。http://registry.npmjs.org/

    詳見?semver(7).

    • version?必須完全和version一致
    • >version?必須比version大
    • >=version?同上
    • <version?同上
    • <=version?同上
    • ~version?大約一樣,見semver(7)
    • 1.2.x?1.2.0, 1.2.1, 等,但不包括1.3.0
    • http://...?見下文'依賴URL'
    • *?所有
    • ""?空,同*
    • version1 - version2?同?>=version1 <=version2.
    • range1 || range2?二選一。
    • git...?見下文'依賴Git URL'
    • user/repo?見下文'GitHub URLs'

    比如下面都是合法的:

    { "dependencies" :{ "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "elf" : "~1.2.3" , "two" : "2.x" , "thr" : "3.3.x" } }

    包的發布

    通過使用?npm init?可以根據交互式回答產生一個符合標準的 package.json。創建一個?index.js?作為包的接口,一個簡單的包就制作完成了。
    在發布前,我們還需要獲得一個賬號用于今后維護自己的包,使用?npm adduser?根據提示完成賬號的創建。

    完成后可以使用?npm whoami?檢測是否已經取得了賬號。

    接下來,在 package.json 所在目錄下運行?npm publish,稍等片刻就可以完成發布了,打開瀏覽器,訪問?http://search.npmjs.org/?就可以找到自己剛剛發布的包了。現在我們可以在世界的任意一臺計算機上使用?npm install neveryumodule?命令來安裝它。

    如果你的包將來有更新,只需要在 package.json 文件中修改 version 字段,然后重新使用?npm publish?命令就行了。
    如果你對已發布的包不滿意,可以使用?npm unpublish?命令來取消發布。

    總結

    以上是生活随笔為你收集整理的npm 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产成人综合美国十次 | 色五月五月丁香亚洲综合网 | 精品久久久久久人妻无码中文字幕 | 久久99精品久久久久久动态图 | 人人妻在人人 | 色五月五月丁香亚洲综合网 | av无码电影一区二区三区 | 久久婷婷五月综合色国产香蕉 | 欧洲精品码一区二区三区免费看 | 国产乱码精品一品二品 | 人妻无码αv中文字幕久久琪琪布 | 2020久久超碰国产精品最新 | 国产激情综合五月久久 | 国产精品亚洲lv粉色 | 97精品人妻一区二区三区香蕉 | 久久午夜无码鲁丝片午夜精品 | 国产另类ts人妖一区二区 | 国产99久久精品一区二区 | 久热国产vs视频在线观看 | 99re在线播放 | 亚洲色www成人永久网址 | 乌克兰少妇xxxx做受 | 天天躁夜夜躁狠狠是什么心态 | 亚洲成在人网站无码天堂 | 欧美日韩在线亚洲综合国产人 | 熟妇人妻中文av无码 | 九月婷婷人人澡人人添人人爽 | 欧美成人免费全部网站 | 国产美女精品一区二区三区 | 国产综合久久久久鬼色 | 久久精品国产精品国产精品污 | 激情内射亚州一区二区三区爱妻 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日韩av无码中文无码电影 | 亚洲精品无码人妻无码 | 亚洲一区av无码专区在线观看 | 久久综合给合久久狠狠狠97色 | 天天爽夜夜爽夜夜爽 | 人人妻人人澡人人爽人人精品浪潮 | 成人性做爰aaa片免费看 | 在线欧美精品一区二区三区 | 国产在线精品一区二区三区直播 | 激情内射亚州一区二区三区爱妻 | 久久精品国产一区二区三区 | 97色伦图片97综合影院 | 少妇无码一区二区二三区 | 久久成人a毛片免费观看网站 | 国产亚洲美女精品久久久2020 | 亚洲精品美女久久久久久久 | 成熟妇人a片免费看网站 | 超碰97人人做人人爱少妇 | 色综合久久久久综合一本到桃花网 | 国产绳艺sm调教室论坛 | 又大又黄又粗又爽的免费视频 | 日本熟妇大屁股人妻 | 人妻少妇精品无码专区二区 | 亚洲另类伦春色综合小说 | 亚洲日韩中文字幕在线播放 | 久久国语露脸国产精品电影 | 亚洲精品中文字幕 | 国产片av国语在线观看 | 老熟妇乱子伦牲交视频 | 自拍偷自拍亚洲精品10p | 又大又黄又粗又爽的免费视频 | 人人澡人摸人人添 | 国产人妻久久精品二区三区老狼 | 久久午夜无码鲁丝片 | 丰满人妻一区二区三区免费视频 | 熟妇人妻无乱码中文字幕 | 无码精品人妻一区二区三区av | 国语自产偷拍精品视频偷 | 色爱情人网站 | 久久久久亚洲精品中文字幕 | 一本精品99久久精品77 | 国产精品鲁鲁鲁 | 精品国产精品久久一区免费式 | 久青草影院在线观看国产 | 欧美阿v高清资源不卡在线播放 | 国产特级毛片aaaaaaa高清 | 日日躁夜夜躁狠狠躁 | 久精品国产欧美亚洲色aⅴ大片 | yw尤物av无码国产在线观看 | 午夜无码区在线观看 | 国产熟女一区二区三区四区五区 | 欧美丰满老熟妇xxxxx性 | 免费观看激色视频网站 | 99久久精品日本一区二区免费 | 久久精品人人做人人综合试看 | 强开小婷嫩苞又嫩又紧视频 | 久久综合给久久狠狠97色 | 岛国片人妻三上悠亚 | 夜先锋av资源网站 | 天堂久久天堂av色综合 | 免费中文字幕日韩欧美 | 国产人妻精品午夜福利免费 | а天堂中文在线官网 | 一区二区三区乱码在线 | 欧洲 | 国内揄拍国内精品少妇国语 | 欧美人与牲动交xxxx | 国内精品久久毛片一区二区 | 日本精品少妇一区二区三区 | 暴力强奷在线播放无码 | 人妻人人添人妻人人爱 | 亚洲欧美中文字幕5发布 | 正在播放老肥熟妇露脸 | 精品欧洲av无码一区二区三区 | 亚洲自偷精品视频自拍 | 天天摸天天碰天天添 | 亚洲精品国产精品乱码视色 | 国内精品久久久久久中文字幕 | 亚洲国产精品无码一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 精品乱子伦一区二区三区 | 国产色精品久久人妻 | 爽爽影院免费观看 | 在线播放免费人成毛片乱码 | 国产suv精品一区二区五 | 内射巨臀欧美在线视频 | 国产成人一区二区三区在线观看 | 国产成人精品优优av | 大屁股大乳丰满人妻 | 国产情侣作爱视频免费观看 | 强开小婷嫩苞又嫩又紧视频 | 亚洲一区av无码专区在线观看 | 草草网站影院白丝内射 | 97色伦图片97综合影院 | 久久久久99精品国产片 | 学生妹亚洲一区二区 | 双乳奶水饱满少妇呻吟 | 国产精品无码永久免费888 | 无码av最新清无码专区吞精 | 亚洲综合色区中文字幕 | 99精品视频在线观看免费 | 日日天干夜夜狠狠爱 | 国产精品99爱免费视频 | 亚洲精品一区二区三区在线 | 人人妻人人澡人人爽人人精品 | 色欲人妻aaaaaaa无码 | 精品人妻人人做人人爽夜夜爽 | 久久精品女人天堂av免费观看 | 97色伦图片97综合影院 | 中文字幕无码av激情不卡 | 天天摸天天碰天天添 | 国产亚洲精品久久久久久 | 中文无码精品a∨在线观看不卡 | 四虎4hu永久免费 | 中文字幕乱妇无码av在线 | 亚洲色在线无码国产精品不卡 | 久久精品人人做人人综合试看 | 国产绳艺sm调教室论坛 | 给我免费的视频在线观看 | 蜜桃av抽搐高潮一区二区 | 亚洲 激情 小说 另类 欧美 | 日韩人妻无码中文字幕视频 | 日日夜夜撸啊撸 | 无码国内精品人妻少妇 | 1000部啪啪未满十八勿入下载 | 一个人看的www免费视频在线观看 | 国产精品自产拍在线观看 | 亚洲国产高清在线观看视频 | 亚洲毛片av日韩av无码 | 久久国内精品自在自线 | 人人妻人人澡人人爽欧美一区九九 | 成人女人看片免费视频放人 | 精品久久8x国产免费观看 | 国产精品久久久久久无码 | 秋霞特色aa大片 | 最新国产乱人伦偷精品免费网站 | 久久久精品456亚洲影院 | 亚洲欧美综合区丁香五月小说 | 熟妇人妻中文av无码 | 女人被男人躁得好爽免费视频 | 水蜜桃色314在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 国语精品一区二区三区 | 久久99精品久久久久久动态图 | 国产又爽又黄又刺激的视频 | 欧美人与牲动交xxxx | 成人亚洲精品久久久久 | 亚洲国产综合无码一区 | 亚洲熟女一区二区三区 | 无码一区二区三区在线观看 | 亚洲精品一区二区三区四区五区 | 亚洲高清偷拍一区二区三区 | 99国产精品白浆在线观看免费 | 无码精品国产va在线观看dvd | 精品国产一区二区三区四区在线看 | 天堂无码人妻精品一区二区三区 | 男人扒开女人内裤强吻桶进去 | 色欲综合久久中文字幕网 | 爆乳一区二区三区无码 | 成熟妇人a片免费看网站 | 亚洲精品久久久久久久久久久 | 日本又色又爽又黄的a片18禁 | 亚洲乱码日产精品bd | 76少妇精品导航 | 欧美国产日产一区二区 | 伊人久久婷婷五月综合97色 | 又粗又大又硬又长又爽 | 伊人色综合久久天天小片 | 亚洲乱码日产精品bd | 精品一区二区不卡无码av | 国内揄拍国内精品人妻 | 国产人妻久久精品二区三区老狼 | 亚洲精品国产第一综合99久久 | 精品人人妻人人澡人人爽人人 | 免费观看又污又黄的网站 | 精品日本一区二区三区在线观看 | 人人超人人超碰超国产 | 免费国产成人高清在线观看网站 | 亚洲欧洲中文日韩av乱码 | 老头边吃奶边弄进去呻吟 | 人人澡人人妻人人爽人人蜜桃 | 国产亚洲精品久久久久久 | 国产深夜福利视频在线 | 激情国产av做激情国产爱 | 午夜丰满少妇性开放视频 | 色综合天天综合狠狠爱 | 精品久久久中文字幕人妻 | 国产两女互慰高潮视频在线观看 | 中文字幕色婷婷在线视频 | 亚洲高清偷拍一区二区三区 | 野狼第一精品社区 | 激情五月综合色婷婷一区二区 | 动漫av一区二区在线观看 | 97久久精品无码一区二区 | 国产亚洲精品久久久久久久久动漫 | 2020久久超碰国产精品最新 | 奇米影视7777久久精品人人爽 | a片免费视频在线观看 | 一二三四社区在线中文视频 | 国产又爽又猛又粗的视频a片 | 色噜噜亚洲男人的天堂 | 丰满人妻一区二区三区免费视频 | 亚洲人成网站免费播放 | 中文字幕精品av一区二区五区 | 亚洲国产欧美日韩精品一区二区三区 | 久久99精品国产麻豆蜜芽 | 夜夜夜高潮夜夜爽夜夜爰爰 | 色一情一乱一伦一区二区三欧美 | 国产成人无码一二三区视频 | 色婷婷久久一区二区三区麻豆 | 日日摸夜夜摸狠狠摸婷婷 | 国产精品美女久久久 | 精品一区二区三区波多野结衣 | av香港经典三级级 在线 | 曰韩无码二三区中文字幕 | 国产婷婷色一区二区三区在线 | 色窝窝无码一区二区三区色欲 | 东京无码熟妇人妻av在线网址 | 久久久久国色av免费观看性色 | 无码人妻出轨黑人中文字幕 | 欧美老妇与禽交 | 色欲人妻aaaaaaa无码 | 蜜桃无码一区二区三区 | 激情五月综合色婷婷一区二区 | 黄网在线观看免费网站 | 亚洲精品成人福利网站 | 亚洲国产精品美女久久久久 | 色婷婷久久一区二区三区麻豆 | 网友自拍区视频精品 | 狠狠cao日日穞夜夜穞av | 夜夜躁日日躁狠狠久久av | 老子影院午夜精品无码 | 少妇太爽了在线观看 | 色情久久久av熟女人妻网站 | √8天堂资源地址中文在线 | 粉嫩少妇内射浓精videos | 夜夜高潮次次欢爽av女 | 超碰97人人射妻 | 久久无码中文字幕免费影院蜜桃 | 久久亚洲精品成人无码 | 亚洲精品国产精品乱码不卡 | 亚洲小说图区综合在线 | 久久久久成人精品免费播放动漫 | 国产精品99久久精品爆乳 | 国内丰满熟女出轨videos | 色老头在线一区二区三区 | 国产精品无码久久av | 亚洲乱亚洲乱妇50p | 欧美 丝袜 自拍 制服 另类 | 久久人人爽人人爽人人片av高清 | 国产精品人妻一区二区三区四 | 无码纯肉视频在线观看 | 国产美女精品一区二区三区 | 亚洲成在人网站无码天堂 | 日本精品人妻无码77777 天堂一区人妻无码 | 一二三四社区在线中文视频 | 欧美性色19p | 免费国产黄网站在线观看 | 色综合久久网 | 亚洲一区二区三区偷拍女厕 | 亚洲va中文字幕无码久久不卡 | 亚洲色偷偷男人的天堂 | 国产电影无码午夜在线播放 | 又大又硬又爽免费视频 | 亚洲成a人片在线观看无码3d | 老司机亚洲精品影院无码 | 久久精品国产一区二区三区 | 久久久精品456亚洲影院 | 天堂а√在线地址中文在线 | 久久99精品国产.久久久久 | 亚洲精品欧美二区三区中文字幕 | 日本免费一区二区三区最新 | 日本丰满熟妇videos | 无码任你躁久久久久久久 | 亚洲精品综合一区二区三区在线 | 在线观看欧美一区二区三区 | 亚洲の无码国产の无码步美 | 俄罗斯老熟妇色xxxx | 亚洲狠狠色丁香婷婷综合 | 亚洲自偷自拍另类第1页 | 久久精品国产99久久6动漫 | 丁香花在线影院观看在线播放 | 色 综合 欧美 亚洲 国产 | 国产内射爽爽大片视频社区在线 | 免费无码一区二区三区蜜桃大 | 欧美日韩人成综合在线播放 | 欧美精品免费观看二区 | 色窝窝无码一区二区三区色欲 | 国产精品.xx视频.xxtv | 久热国产vs视频在线观看 | 久久久国产精品无码免费专区 | √天堂资源地址中文在线 | 奇米影视7777久久精品 | 樱花草在线播放免费中文 | 亚洲人成无码网www | www国产亚洲精品久久网站 | 久久视频在线观看精品 | 国精产品一区二区三区 | 强伦人妻一区二区三区视频18 | 六十路熟妇乱子伦 | а天堂中文在线官网 | 国产精品人妻一区二区三区四 | 国产精品国产三级国产专播 | 亚洲aⅴ无码成人网站国产app | 正在播放老肥熟妇露脸 | 亚洲色在线无码国产精品不卡 | 国产欧美精品一区二区三区 | 东京热男人av天堂 | 丰满少妇高潮惨叫视频 | 人妻互换免费中文字幕 | 日韩av激情在线观看 | 中文精品久久久久人妻不卡 | 成年女人永久免费看片 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲国产欧美国产综合一区 | 日本乱人伦片中文三区 | 欧美日韩视频无码一区二区三 | 又色又爽又黄的美女裸体网站 | 亚洲成a人一区二区三区 | 高潮喷水的毛片 | 99精品国产综合久久久久五月天 | 玩弄中年熟妇正在播放 | 无码人妻精品一区二区三区不卡 | 亚洲精品鲁一鲁一区二区三区 | 国产精品沙发午睡系列 | 亚洲成av人影院在线观看 | 一本久道高清无码视频 | 亚洲精品国产a久久久久久 | 亚洲一区二区三区四区 | 久久亚洲精品中文字幕无男同 | 玩弄中年熟妇正在播放 | 国产97在线 | 亚洲 | 特级做a爰片毛片免费69 | 中文字幕中文有码在线 | 成人无码视频免费播放 | 中文字幕av伊人av无码av | 亚洲色欲色欲天天天www | 亚洲成av人影院在线观看 | 亚洲欧美日韩成人高清在线一区 | 午夜男女很黄的视频 | 国产 浪潮av性色四虎 | 亚洲日本va午夜在线电影 | 人妻体内射精一区二区三四 | 波多野结衣乳巨码无在线观看 | 狠狠cao日日穞夜夜穞av | 日本乱人伦片中文三区 | 日日碰狠狠躁久久躁蜜桃 | 久久综合狠狠综合久久综合88 | 国产农村妇女高潮大叫 | 99久久人妻精品免费一区 | 国产后入清纯学生妹 | 久久国产精品精品国产色婷婷 | 激情国产av做激情国产爱 | 激情综合激情五月俺也去 | 国产精品a成v人在线播放 | 午夜男女很黄的视频 | 久精品国产欧美亚洲色aⅴ大片 | 大屁股大乳丰满人妻 | 午夜福利一区二区三区在线观看 | 久久精品国产大片免费观看 | 日韩精品无码一本二本三本色 | 色婷婷欧美在线播放内射 | 国产精品手机免费 | 精品偷自拍另类在线观看 | 亚洲精品成人福利网站 | 无码人妻精品一区二区三区下载 | 99精品视频在线观看免费 | 午夜精品久久久久久久久 | 狠狠综合久久久久综合网 | 精品偷自拍另类在线观看 | 国产绳艺sm调教室论坛 | 激情内射日本一区二区三区 | 亚洲自偷精品视频自拍 | 综合人妻久久一区二区精品 | 欧美日韩视频无码一区二区三 | 国产精品18久久久久久麻辣 | 亚洲欧美综合区丁香五月小说 | 欧美三级不卡在线观看 | 精品aⅴ一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 国产片av国语在线观看 | 四虎国产精品一区二区 | 国产av无码专区亚洲a∨毛片 | 亚洲日韩av片在线观看 | 日产国产精品亚洲系列 | 丁香啪啪综合成人亚洲 | 国精产品一区二区三区 | 男人和女人高潮免费网站 | 久久亚洲精品中文字幕无男同 | 精品人妻中文字幕有码在线 | 精品无码国产自产拍在线观看蜜 | 亚洲精品午夜无码电影网 | 久久99精品久久久久久动态图 | 曰韩少妇内射免费播放 | 乌克兰少妇性做爰 | 青青青爽视频在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲色成人中文字幕网站 | 国产另类ts人妖一区二区 | 福利一区二区三区视频在线观看 | 午夜福利一区二区三区在线观看 | 国产精品亚洲五月天高清 | 日韩精品久久久肉伦网站 | 国产亚洲欧美在线专区 | 97精品人妻一区二区三区香蕉 | 久久国产精品精品国产色婷婷 | 日产精品99久久久久久 | 精品偷拍一区二区三区在线看 | 亚洲成色在线综合网站 | 日韩成人一区二区三区在线观看 | 亚洲中文字幕va福利 | 人妻少妇被猛烈进入中文字幕 | 中文字幕无线码免费人妻 | 亚洲一区二区观看播放 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 在线天堂新版最新版在线8 | 久在线观看福利视频 | 在线 国产 欧美 亚洲 天堂 | 亚洲中文字幕无码中文字在线 | 成人精品视频一区二区三区尤物 | 国精产品一区二区三区 | 学生妹亚洲一区二区 | 国产亚洲精品精品国产亚洲综合 | 色综合久久久无码中文字幕 | 亚洲综合精品香蕉久久网 | 成人免费视频一区二区 | 熟妇人妻无码xxx视频 | 亚洲中文字幕无码中字 | 国产绳艺sm调教室论坛 | 内射巨臀欧美在线视频 | 亚洲の无码国产の无码影院 | 性欧美疯狂xxxxbbbb | 高潮毛片无遮挡高清免费视频 | 国产一区二区三区四区五区加勒比 | 国产精品成人av在线观看 | 日韩av激情在线观看 | 国内丰满熟女出轨videos | 亚洲aⅴ无码成人网站国产app | 免费人成在线视频无码 | 国产女主播喷水视频在线观看 | 色偷偷人人澡人人爽人人模 | 亚洲爆乳无码专区 | 特黄特色大片免费播放器图片 | 人妻互换免费中文字幕 | 免费无码肉片在线观看 | 在线 国产 欧美 亚洲 天堂 | 牲交欧美兽交欧美 | 国产精品免费大片 | 国产成人精品视频ⅴa片软件竹菊 | 国产99久久精品一区二区 | 日日摸天天摸爽爽狠狠97 | 亚洲人亚洲人成电影网站色 | 精品无码一区二区三区爱欲 | 999久久久国产精品消防器材 | 九九综合va免费看 | 久久精品国产一区二区三区 | 99久久亚洲精品无码毛片 | 又紧又大又爽精品一区二区 | 日韩在线不卡免费视频一区 | 无码中文字幕色专区 | 亚洲欧洲日本无在线码 | 国语自产偷拍精品视频偷 | 国产精品久久久久无码av色戒 | 一本久道高清无码视频 | 国内揄拍国内精品人妻 | 久久精品99久久香蕉国产色戒 | 国内丰满熟女出轨videos | 男人的天堂av网站 | 日韩精品无码一区二区中文字幕 | 女人被爽到呻吟gif动态图视看 | 午夜成人1000部免费视频 | 欧美日本精品一区二区三区 | 国色天香社区在线视频 | 内射老妇bbwx0c0ck | 国产精品国产自线拍免费软件 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 精品厕所偷拍各类美女tp嘘嘘 | 国产欧美精品一区二区三区 | 国产午夜精品一区二区三区嫩草 | 在线成人www免费观看视频 | 日本一本二本三区免费 | 国产av一区二区三区最新精品 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲经典千人经典日产 | 亚洲国产精品一区二区美利坚 | 亚洲 日韩 欧美 成人 在线观看 | 熟妇女人妻丰满少妇中文字幕 | 国产亚洲人成a在线v网站 | 俺去俺来也在线www色官网 | 2020最新国产自产精品 | 人妻夜夜爽天天爽三区 | 狠狠cao日日穞夜夜穞av | 色一情一乱一伦一区二区三欧美 | 精品夜夜澡人妻无码av蜜桃 | 76少妇精品导航 | 欧美熟妇另类久久久久久不卡 | 亚洲中文字幕久久无码 | 少妇性荡欲午夜性开放视频剧场 | 一本久久a久久精品亚洲 | 久久国语露脸国产精品电影 | 精品一区二区三区无码免费视频 | 国产另类ts人妖一区二区 | 国产97人人超碰caoprom | 国产精品爱久久久久久久 | 无码毛片视频一区二区本码 | 日本精品高清一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 一本久道久久综合婷婷五月 | 强奷人妻日本中文字幕 | 国产激情无码一区二区app | 免费看男女做好爽好硬视频 | 一本一道久久综合久久 | 国产乡下妇女做爰 | 51国偷自产一区二区三区 | 国产极品视觉盛宴 | 久久精品中文字幕一区 | yw尤物av无码国产在线观看 | 亚洲狠狠婷婷综合久久 | 一二三四社区在线中文视频 | 在线精品国产一区二区三区 | 少妇厨房愉情理9仑片视频 | 日韩成人一区二区三区在线观看 | 欧美自拍另类欧美综合图片区 | 国产av剧情md精品麻豆 | 国产97人人超碰caoprom | 成人性做爰aaa片免费看 | 97色伦图片97综合影院 | 曰韩少妇内射免费播放 | 国产亚洲精品久久久久久大师 | 亚洲区小说区激情区图片区 | 久久亚洲a片com人成 | 亚洲熟妇自偷自拍另类 | 中文精品久久久久人妻不卡 | 欧美高清在线精品一区 | 日本精品久久久久中文字幕 | 亚洲国产精品毛片av不卡在线 | 亚洲爆乳精品无码一区二区三区 | 国产成人无码av在线影院 | 鲁一鲁av2019在线 | 人人妻人人澡人人爽欧美一区 | 亚洲欧美日韩成人高清在线一区 | aⅴ在线视频男人的天堂 | 在线精品亚洲一区二区 | 欧美人与善在线com | 人妻与老人中文字幕 | 老太婆性杂交欧美肥老太 | 疯狂三人交性欧美 | 亚洲阿v天堂在线 | 在线观看欧美一区二区三区 | 97资源共享在线视频 | 欧美日韩在线亚洲综合国产人 | 亚洲精品国产品国语在线观看 | 一本久道高清无码视频 | 精品久久久久久人妻无码中文字幕 | 欧美性黑人极品hd | 99在线 | 亚洲 | 3d动漫精品啪啪一区二区中 | 76少妇精品导航 | 国产情侣作爱视频免费观看 | 国产麻豆精品精东影业av网站 | 欧美 日韩 亚洲 在线 | 天堂无码人妻精品一区二区三区 | 色婷婷综合中文久久一本 | 久久久久国色av免费观看性色 | 美女扒开屁股让男人桶 | 99久久99久久免费精品蜜桃 | 大乳丰满人妻中文字幕日本 | 久久精品人人做人人综合试看 | 熟妇人妻无乱码中文字幕 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲欧美国产精品专区久久 | 国产欧美熟妇另类久久久 | 麻豆国产丝袜白领秘书在线观看 | 成人欧美一区二区三区黑人 | 亚洲乱码日产精品bd | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品欧美成人 | 对白脏话肉麻粗话av | 久久这里只有精品视频9 | 亚洲va中文字幕无码久久不卡 | 香蕉久久久久久av成人 | 美女极度色诱视频国产 | 国产精品久久久久7777 | 国产内射爽爽大片视频社区在线 | 久久久久久av无码免费看大片 | 国产精品多人p群无码 | 无码午夜成人1000部免费视频 | 夜精品a片一区二区三区无码白浆 | 曰韩无码二三区中文字幕 | 国产精品va在线播放 | 国产精品亚洲а∨无码播放麻豆 | 欧美国产日韩亚洲中文 | 成人免费无码大片a毛片 | 日韩人妻系列无码专区 | 99精品视频在线观看免费 | 一本久道久久综合狠狠爱 | 人妻天天爽夜夜爽一区二区 | 女人被男人爽到呻吟的视频 | 无码人妻av免费一区二区三区 | 欧美日韩在线亚洲综合国产人 | 亚洲の无码国产の无码影院 | 六月丁香婷婷色狠狠久久 | 国产福利视频一区二区 | 日韩视频 中文字幕 视频一区 | 国产舌乚八伦偷品w中 | 99久久精品无码一区二区毛片 | 色综合久久88色综合天天 | 国产精品亚洲а∨无码播放麻豆 | 免费无码av一区二区 | 亚洲 激情 小说 另类 欧美 | 亚洲精品成人福利网站 | 亚洲の无码国产の无码步美 | 嫩b人妻精品一区二区三区 | 午夜无码区在线观看 | 小鲜肉自慰网站xnxx | 黄网在线观看免费网站 | 日日碰狠狠躁久久躁蜜桃 | 国产av无码专区亚洲awww | 国产真实乱对白精彩久久 | 国产色在线 | 国产 | 亚洲综合色区中文字幕 | 国产成人无码专区 | 丝袜 中出 制服 人妻 美腿 | 国产美女精品一区二区三区 | 少妇太爽了在线观看 | 国产亚洲人成a在线v网站 | 国产人妻久久精品二区三区老狼 | 国产综合色产在线精品 | 亚洲色www成人永久网址 | 无套内射视频囯产 | 久9re热视频这里只有精品 | 亚洲 另类 在线 欧美 制服 | av无码久久久久不卡免费网站 | 少妇性荡欲午夜性开放视频剧场 | 亚洲国产精品久久久久久 | 日本www一道久久久免费榴莲 | 亚洲 另类 在线 欧美 制服 | 思思久久99热只有频精品66 | 网友自拍区视频精品 | 亚洲gv猛男gv无码男同 | 成人av无码一区二区三区 | 亚洲伊人久久精品影院 | 美女扒开屁股让男人桶 | 夜夜躁日日躁狠狠久久av | 色噜噜亚洲男人的天堂 | 夜夜高潮次次欢爽av女 | 性色欲网站人妻丰满中文久久不卡 | 国产午夜亚洲精品不卡下载 | 狠狠色丁香久久婷婷综合五月 | 性欧美牲交在线视频 | 蜜桃臀无码内射一区二区三区 | 在线精品国产一区二区三区 | 久久aⅴ免费观看 | 免费人成在线观看网站 | 亚洲中文字幕久久无码 | 99精品无人区乱码1区2区3区 | 色综合久久网 | 99久久精品无码一区二区毛片 | 午夜熟女插插xx免费视频 | 久久久久se色偷偷亚洲精品av | 久久国产精品二国产精品 | 国产特级毛片aaaaaa高潮流水 | 成人一区二区免费视频 | 色婷婷综合激情综在线播放 | 亚洲综合无码久久精品综合 | 国产手机在线αⅴ片无码观看 | 日韩精品久久久肉伦网站 | 丰满人妻翻云覆雨呻吟视频 | 欧美老妇与禽交 | 人人妻人人澡人人爽人人精品浪潮 | 欧美熟妇另类久久久久久多毛 | 好爽又高潮了毛片免费下载 | 中文字幕人成乱码熟女app | 欧美精品无码一区二区三区 | 亚洲国产精品一区二区第一页 | 51国偷自产一区二区三区 | 97无码免费人妻超级碰碰夜夜 | 久久国产精品_国产精品 | 无码av岛国片在线播放 | 奇米影视7777久久精品 | 最近免费中文字幕中文高清百度 | 人妻有码中文字幕在线 | 亚洲国产精品一区二区第一页 | 国产suv精品一区二区五 | 国产无套内射久久久国产 | 亚洲色欲久久久综合网东京热 | 国产香蕉尹人综合在线观看 | 亚洲第一网站男人都懂 | 欧美熟妇另类久久久久久不卡 | 无码人妻少妇伦在线电影 | 久久久久成人片免费观看蜜芽 | 中文字幕人妻丝袜二区 | 久久zyz资源站无码中文动漫 | 亚洲爆乳精品无码一区二区三区 | 中文精品无码中文字幕无码专区 | 97久久超碰中文字幕 | 欧美日本日韩 | 乱人伦人妻中文字幕无码 | 日本又色又爽又黄的a片18禁 | 老太婆性杂交欧美肥老太 | 国产乱码精品一品二品 | 99久久99久久免费精品蜜桃 | 国产精品鲁鲁鲁 | 影音先锋中文字幕无码 | 99riav国产精品视频 | 激情亚洲一区国产精品 | 亚洲色大成网站www | аⅴ资源天堂资源库在线 | 国内精品一区二区三区不卡 | 久久午夜无码鲁丝片秋霞 | 国产精品无码一区二区桃花视频 | 亚洲一区二区三区播放 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲s码欧洲m码国产av | 大地资源网第二页免费观看 | 久久99精品久久久久久 | 亚洲日韩精品欧美一区二区 | 国产区女主播在线观看 | 亚洲成a人一区二区三区 | 中国大陆精品视频xxxx | 亚洲欧美国产精品专区久久 | 男人扒开女人内裤强吻桶进去 | 少妇人妻av毛片在线看 | 亚洲中文字幕无码中字 | 国产亚洲精品久久久久久国模美 | 亚洲欧美日韩国产精品一区二区 | 亚洲日韩av一区二区三区四区 | 狂野欧美性猛交免费视频 | 成人毛片一区二区 | 国产激情无码一区二区 | 波多野结衣乳巨码无在线观看 | 亚洲精品国产精品乱码视色 | 香蕉久久久久久av成人 | 国产精品嫩草久久久久 | 无码人妻久久一区二区三区不卡 | 狠狠cao日日穞夜夜穞av | 色五月丁香五月综合五月 | 自拍偷自拍亚洲精品被多人伦好爽 | 人妻天天爽夜夜爽一区二区 | 精品成在人线av无码免费看 | 99久久久国产精品无码免费 | 高清国产亚洲精品自在久久 | 久久久中文字幕日本无吗 | www国产精品内射老师 | 在线播放亚洲第一字幕 | 少妇高潮一区二区三区99 | 中文无码精品a∨在线观看不卡 | 一本久道久久综合婷婷五月 | 亚洲无人区午夜福利码高清完整版 | 亚洲国产欧美在线成人 | 午夜无码区在线观看 | 亚洲精品一区二区三区婷婷月 | 亚洲精品久久久久久一区二区 | 黑人巨大精品欧美黑寡妇 | 欧美日韩综合一区二区三区 | 狠狠躁日日躁夜夜躁2020 | 一个人免费观看的www视频 | 亚洲国产av美女网站 | 国产偷自视频区视频 | 亚洲热妇无码av在线播放 | 乱人伦中文视频在线观看 | 强开小婷嫩苞又嫩又紧视频 | 人妻少妇被猛烈进入中文字幕 | 精品无码一区二区三区爱欲 | 国产精品久久国产精品99 | 久久精品国产大片免费观看 | 国产无套内射久久久国产 | 国产成人无码a区在线观看视频app | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产色视频一区二区三区 | 免费人成在线观看网站 | 高清无码午夜福利视频 | 人妻尝试又大又粗久久 | 免费观看的无遮挡av | 黑人粗大猛烈进出高潮视频 | 18精品久久久无码午夜福利 | 亚洲熟女一区二区三区 | 美女扒开屁股让男人桶 | 久久亚洲中文字幕精品一区 | 激情亚洲一区国产精品 | 精品国产麻豆免费人成网站 | 国产熟妇另类久久久久 | 国产精品第一国产精品 | a在线亚洲男人的天堂 | 中文字幕色婷婷在线视频 | 亚洲精品一区二区三区大桥未久 | 国产午夜福利亚洲第一 | 中文字幕+乱码+中文字幕一区 | 国产精品免费大片 | 乱人伦人妻中文字幕无码久久网 | 久久视频在线观看精品 | 久久国产自偷自偷免费一区调 | 精品一区二区三区波多野结衣 | 国产成人无码av片在线观看不卡 | 天天拍夜夜添久久精品 | 色综合久久久久综合一本到桃花网 | 国产热a欧美热a在线视频 | 免费视频欧美无人区码 | 99视频精品全部免费免费观看 | 小泽玛莉亚一区二区视频在线 | 国语精品一区二区三区 | 久久久国产精品无码免费专区 | 999久久久国产精品消防器材 | 国产亚洲tv在线观看 | 精品少妇爆乳无码av无码专区 | 日本大乳高潮视频在线观看 | 国产精品无码成人午夜电影 | 无人区乱码一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 免费观看激色视频网站 | 暴力强奷在线播放无码 | 人妻少妇精品久久 | 欧美性猛交xxxx富婆 | 亚洲国产精华液网站w | 成人一区二区免费视频 | 亚洲中文字幕久久无码 | 在线精品国产一区二区三区 | 久久久无码中文字幕久... | 99久久精品日本一区二区免费 | 日韩欧美中文字幕在线三区 | 成人无码视频在线观看网站 | 久久人妻内射无码一区三区 | 成人一区二区免费视频 | 国产精品国产三级国产专播 | 国产人妻人伦精品1国产丝袜 | 性欧美牲交在线视频 | 国产精品久久久久影院嫩草 | 日韩av无码一区二区三区不卡 | 99久久人妻精品免费一区 | 亚洲精品欧美二区三区中文字幕 | 久久97精品久久久久久久不卡 | 97夜夜澡人人爽人人喊中国片 | 久久久av男人的天堂 | 亚洲色成人中文字幕网站 | 中文字幕无码热在线视频 | 色综合视频一区二区三区 | 日本精品少妇一区二区三区 | 中文字幕 人妻熟女 | 人妻插b视频一区二区三区 | 欧美日韩在线亚洲综合国产人 | 狂野欧美性猛xxxx乱大交 | 久久99热只有频精品8 | 国产在线无码精品电影网 | 午夜精品久久久久久久久 | 青春草在线视频免费观看 | 人妻少妇精品无码专区二区 | 对白脏话肉麻粗话av | 嫩b人妻精品一区二区三区 | 免费无码一区二区三区蜜桃大 | 大胆欧美熟妇xx | 四虎影视成人永久免费观看视频 | 国产精品亚洲一区二区三区喷水 | 激情内射亚州一区二区三区爱妻 | 蜜桃av抽搐高潮一区二区 | 少妇被粗大的猛进出69影院 | 无码人妻av免费一区二区三区 | 性啪啪chinese东北女人 | 欧美丰满熟妇xxxx性ppx人交 | 帮老师解开蕾丝奶罩吸乳网站 | 乱码av麻豆丝袜熟女系列 | 成人精品一区二区三区中文字幕 | 精品久久久久久人妻无码中文字幕 | 九九在线中文字幕无码 | 人人妻人人澡人人爽欧美一区九九 | 国产综合色产在线精品 | 久久精品中文字幕一区 | 日韩欧美中文字幕公布 | 日韩亚洲欧美中文高清在线 | 久久久成人毛片无码 | 国产婷婷色一区二区三区在线 | 久久精品女人的天堂av | 伊在人天堂亚洲香蕉精品区 | 欧美野外疯狂做受xxxx高潮 | 成人无码视频免费播放 | 我要看www免费看插插视频 | 偷窥村妇洗澡毛毛多 | 日日麻批免费40分钟无码 | 久久精品中文闷骚内射 | 午夜成人1000部免费视频 | 男女下面进入的视频免费午夜 | 九九在线中文字幕无码 | 亚洲熟女一区二区三区 | 亚洲国产精品毛片av不卡在线 | 成熟女人特级毛片www免费 | 国产无遮挡又黄又爽免费视频 | 日产国产精品亚洲系列 | 人妻少妇精品久久 | 国产精品亚洲综合色区韩国 | 97夜夜澡人人爽人人喊中国片 | 国产成人无码午夜视频在线观看 | 成人毛片一区二区 | 成 人 网 站国产免费观看 | 国产精品久久久久久久9999 | 欧美 丝袜 自拍 制服 另类 | 荡女精品导航 | 丰腴饱满的极品熟妇 | 免费人成在线视频无码 | 国产亚洲美女精品久久久2020 | 18禁黄网站男男禁片免费观看 | 国产精品亚洲а∨无码播放麻豆 | 国产乱人伦av在线无码 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲欧美日韩成人高清在线一区 | 给我免费的视频在线观看 | 人妻天天爽夜夜爽一区二区 | а√资源新版在线天堂 | 98国产精品综合一区二区三区 | 婷婷五月综合激情中文字幕 | 蜜桃视频插满18在线观看 | 国产精品久久久av久久久 | 天天做天天爱天天爽综合网 | 国内精品一区二区三区不卡 | 国产精品多人p群无码 | 亚洲呦女专区 | 国产成人精品一区二区在线小狼 | 黑人粗大猛烈进出高潮视频 | 精品欧美一区二区三区久久久 | 午夜嘿嘿嘿影院 | 精品成在人线av无码免费看 | 色综合天天综合狠狠爱 | 久久综合给合久久狠狠狠97色 | 国产亚洲精品精品国产亚洲综合 | 男人扒开女人内裤强吻桶进去 | 夜夜影院未满十八勿进 | a国产一区二区免费入口 | 男女作爱免费网站 | 中文字幕乱码中文乱码51精品 | 久久精品无码一区二区三区 | 人人妻人人澡人人爽精品欧美 | 天堂а√在线中文在线 | 97久久国产亚洲精品超碰热 | 精品夜夜澡人妻无码av蜜桃 | 国产精品99爱免费视频 | 色噜噜亚洲男人的天堂 | 久久99精品国产麻豆 | 国产精品丝袜黑色高跟鞋 | 精品熟女少妇av免费观看 | 国产精品沙发午睡系列 | 国产精品对白交换视频 | 人妻插b视频一区二区三区 | 久久亚洲精品中文字幕无男同 | 成在人线av无码免费 | 亚洲国产精品一区二区美利坚 | 久久亚洲国产成人精品性色 | 日本欧美一区二区三区乱码 | 国产香蕉97碰碰久久人人 | 精品一区二区不卡无码av | 好屌草这里只有精品 | 一本久道高清无码视频 | 377p欧洲日本亚洲大胆 | 影音先锋中文字幕无码 | 我要看www免费看插插视频 | 美女黄网站人色视频免费国产 | 亚洲色欲久久久综合网东京热 | 国产成人精品无码播放 | 人妻aⅴ无码一区二区三区 | 欧美日韩在线亚洲综合国产人 | 中文字幕+乱码+中文字幕一区 | 国产精品成人av在线观看 | 亚洲小说图区综合在线 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | a国产一区二区免费入口 | 成人精品天堂一区二区三区 | 我要看www免费看插插视频 | 国产尤物精品视频 | 久久亚洲中文字幕无码 | 日韩视频 中文字幕 视频一区 | 亚洲日韩av一区二区三区四区 | 国产精品美女久久久 | 中文字幕无码av波多野吉衣 | 亚洲国产精品无码一区二区三区 | 国产无av码在线观看 | 亚洲欧洲中文日韩av乱码 | 国产色在线 | 国产 | 亚洲熟熟妇xxxx | 国色天香社区在线视频 | 97久久国产亚洲精品超碰热 | 国产一精品一av一免费 | 日产精品99久久久久久 | 欧美老人巨大xxxx做受 | 精品日本一区二区三区在线观看 | 双乳奶水饱满少妇呻吟 | 动漫av网站免费观看 | 最新国产麻豆aⅴ精品无码 | 人人爽人人澡人人高潮 | 欧洲精品码一区二区三区免费看 | 亚洲综合另类小说色区 | 扒开双腿吃奶呻吟做受视频 | 影音先锋中文字幕无码 | 免费国产黄网站在线观看 | 搡女人真爽免费视频大全 | 亚洲精品一区二区三区在线观看 | 国产国产精品人在线视 | 国产猛烈高潮尖叫视频免费 | 亚洲精品综合一区二区三区在线 | 国产黄在线观看免费观看不卡 | 欧美高清在线精品一区 | 一本久久伊人热热精品中文字幕 | 午夜免费福利小电影 | 国产精品人妻一区二区三区四 | 久久久久久国产精品无码下载 | 欧美日韩视频无码一区二区三 | 国产网红无码精品视频 | 少妇无码av无码专区在线观看 | av无码电影一区二区三区 | 日韩亚洲欧美中文高清在线 | √8天堂资源地址中文在线 | 精品亚洲成av人在线观看 | 日韩av无码一区二区三区不卡 | 亚洲国产一区二区三区在线观看 | 免费视频欧美无人区码 | 成人无码精品1区2区3区免费看 | 成 人 网 站国产免费观看 | 午夜福利不卡在线视频 | 日韩亚洲欧美中文高清在线 | 亚洲另类伦春色综合小说 | 午夜精品久久久久久久久 | 中文字幕乱码人妻无码久久 | 无人区乱码一区二区三区 | 奇米影视7777久久精品 | 久久久www成人免费毛片 | 乌克兰少妇xxxx做受 | 国内综合精品午夜久久资源 | 日日摸天天摸爽爽狠狠97 | 中文字幕av无码一区二区三区电影 | 久久久国产一区二区三区 | 亚洲色欲久久久综合网东京热 | 国产亚洲美女精品久久久2020 | 国产偷国产偷精品高清尤物 | 精品国产aⅴ无码一区二区 | 国内精品人妻无码久久久影院 | 久久这里只有精品视频9 | 精品水蜜桃久久久久久久 | 无码一区二区三区在线观看 | 久久国产36精品色熟妇 | 久久精品99久久香蕉国产色戒 | 日本熟妇乱子伦xxxx | 内射后入在线观看一区 | 国产人妻精品一区二区三区不卡 | 亚洲人亚洲人成电影网站色 | 98国产精品综合一区二区三区 | 亚洲理论电影在线观看 | 日韩精品无码一本二本三本色 | 少妇高潮一区二区三区99 | 欧美丰满少妇xxxx性 | 精品午夜福利在线观看 | www国产亚洲精品久久网站 | 久久久精品456亚洲影院 | 日本精品人妻无码免费大全 | 欧美乱妇无乱码大黄a片 | 在线a亚洲视频播放在线观看 | 免费无码av一区二区 | 丰满少妇人妻久久久久久 | 欧美xxxxx精品 | 免费网站看v片在线18禁无码 | 精品午夜福利在线观看 | 久久精品女人的天堂av | 久久精品无码一区二区三区 | 鲁一鲁av2019在线 | 正在播放老肥熟妇露脸 | 亚洲精品午夜无码电影网 | 麻豆成人精品国产免费 | 亚洲精品无码国产 | 久久国产精品萌白酱免费 | 国产精品欧美成人 | 国模大胆一区二区三区 | 久久久久久久久蜜桃 | 2020久久超碰国产精品最新 | 亚洲人成网站在线播放942 | 狠狠色欧美亚洲狠狠色www | 亚洲中文字幕乱码av波多ji | 娇妻被黑人粗大高潮白浆 | 色综合久久久无码中文字幕 | 亚洲精品无码国产 | 国产无av码在线观看 | 国产suv精品一区二区五 | 日韩精品乱码av一区二区 | 男女爱爱好爽视频免费看 | 无码人妻精品一区二区三区下载 | 成人影院yy111111在线观看 | 久久99久久99精品中文字幕 | 久久久中文字幕日本无吗 | 97色伦图片97综合影院 | 国产肉丝袜在线观看 | 国产成人人人97超碰超爽8 | 国精产品一区二区三区 | 亚洲 高清 成人 动漫 | 1000部啪啪未满十八勿入下载 | 日本护士毛茸茸高潮 | 丁香啪啪综合成人亚洲 | 亚洲爆乳精品无码一区二区三区 | 99久久婷婷国产综合精品青草免费 | 中文字幕无码视频专区 | 日本一区二区更新不卡 | 久久aⅴ免费观看 | 欧美乱妇无乱码大黄a片 | 国产区女主播在线观看 | 超碰97人人做人人爱少妇 | 青青久在线视频免费观看 | 中文字幕人成乱码熟女app | 欧美自拍另类欧美综合图片区 | 久久精品中文字幕一区 | 中文字幕乱妇无码av在线 | 亚洲欧美日韩国产精品一区二区 | 亚洲自偷精品视频自拍 | √天堂资源地址中文在线 | 亚洲国产精品久久久久久 | 国产片av国语在线观看 | 亚洲理论电影在线观看 | 午夜福利电影 | 天堂亚洲2017在线观看 | 亚洲色欲久久久综合网东京热 | 色 综合 欧美 亚洲 国产 | 久久国产精品精品国产色婷婷 | 麻豆国产人妻欲求不满谁演的 | 亚洲国产欧美国产综合一区 | 免费看男女做好爽好硬视频 | 久久99精品久久久久久 | 精品欧美一区二区三区久久久 | 天天做天天爱天天爽综合网 | 欧美刺激性大交 | 亚洲精品中文字幕 | 久久人人爽人人人人片 | 99久久婷婷国产综合精品青草免费 | 撕开奶罩揉吮奶头视频 | 无码帝国www无码专区色综合 | 一区二区三区乱码在线 | 欧洲 | 亚洲国产成人av在线观看 | 亚洲精品中文字幕乱码 | 国产免费无码一区二区视频 | 国产成人无码a区在线观看视频app | 成 人影片 免费观看 | 国产精品亚洲а∨无码播放麻豆 | 成年美女黄网站色大免费视频 | 久久熟妇人妻午夜寂寞影院 | 免费无码午夜福利片69 | 在线 国产 欧美 亚洲 天堂 | 国产熟女一区二区三区四区五区 | 色 综合 欧美 亚洲 国产 | 麻豆精品国产精华精华液好用吗 | 97se亚洲精品一区 | 国产免费无码一区二区视频 | 亚洲人亚洲人成电影网站色 | 中文字幕+乱码+中文字幕一区 | 97人妻精品一区二区三区 | 成人精品视频一区二区 | 草草网站影院白丝内射 | 无码播放一区二区三区 | 国产成人综合色在线观看网站 | 久久久久成人片免费观看蜜芽 | 国产精品va在线观看无码 | 人人妻人人澡人人爽人人精品 | 亚洲国产精品美女久久久久 | 国产激情综合五月久久 | 妺妺窝人体色www在线小说 | 一本色道久久综合狠狠躁 | 伊人久久大香线蕉亚洲 | 欧美真人作爱免费视频 | 欧美老妇交乱视频在线观看 | 国产成人亚洲综合无码 | 国产在线无码精品电影网 | 7777奇米四色成人眼影 | 中文精品久久久久人妻不卡 | 久久久久久久人妻无码中文字幕爆 | 无码吃奶揉捏奶头高潮视频 | 亚洲精品久久久久avwww潮水 | 又大又硬又黄的免费视频 | 18无码粉嫩小泬无套在线观看 | 特黄特色大片免费播放器图片 | 东京一本一道一二三区 | 欧美日韩在线亚洲综合国产人 | 又大又硬又黄的免费视频 | 国产亚洲tv在线观看 | 亚洲成a人片在线观看无码 | 国产在线无码精品电影网 | 亚洲国产精品一区二区第一页 | 亚洲综合伊人久久大杳蕉 | 永久免费观看美女裸体的网站 | 荫蒂被男人添的好舒服爽免费视频 | 欧美日本精品一区二区三区 | 黑人巨大精品欧美黑寡妇 | 美女扒开屁股让男人桶 | 国产女主播喷水视频在线观看 | 国产精品久久国产三级国 | 欧美阿v高清资源不卡在线播放 | 亚洲天堂2017无码 | 性生交片免费无码看人 | 亚洲色在线无码国产精品不卡 | 久久精品99久久香蕉国产色戒 | 精品欧洲av无码一区二区三区 | 亚洲人亚洲人成电影网站色 | 日韩少妇内射免费播放 | 久久久久久久女国产乱让韩 | 亚洲精品中文字幕久久久久 | 无码吃奶揉捏奶头高潮视频 | 全黄性性激高免费视频 | 人妻有码中文字幕在线 | 麻豆果冻传媒2021精品传媒一区下载 | 中文无码成人免费视频在线观看 | 88国产精品欧美一区二区三区 | 人人妻人人澡人人爽人人精品 | 荫蒂被男人添的好舒服爽免费视频 | 免费观看的无遮挡av | 男人扒开女人内裤强吻桶进去 | 最新版天堂资源中文官网 | 无码av免费一区二区三区试看 | 亚洲熟妇色xxxxx亚洲 | 精品无码一区二区三区的天堂 | 日韩精品无码免费一区二区三区 | 俺去俺来也www色官网 | 成熟妇人a片免费看网站 | 婷婷丁香五月天综合东京热 | 一二三四社区在线中文视频 | 国产无套粉嫩白浆在线 | 亚洲精品一区二区三区大桥未久 | 蜜臀aⅴ国产精品久久久国产老师 | 色综合视频一区二区三区 | 日韩av无码一区二区三区 | 亚洲自偷自偷在线制服 | 秋霞成人午夜鲁丝一区二区三区 | 中文字幕 人妻熟女 | 未满成年国产在线观看 | 黑人大群体交免费视频 | 色妞www精品免费视频 | 少妇性俱乐部纵欲狂欢电影 | 老熟妇仑乱视频一区二区 | 美女极度色诱视频国产 | 无码福利日韩神码福利片 | 久久国产精品精品国产色婷婷 | 成人欧美一区二区三区黑人 | 国产农村乱对白刺激视频 | 久久精品丝袜高跟鞋 | 日本又色又爽又黄的a片18禁 | 久久精品丝袜高跟鞋 | 中文字幕无码乱人伦 | 天下第一社区视频www日本 | 装睡被陌生人摸出水好爽 | 色妞www精品免费视频 | 欧美三级不卡在线观看 | 中文字幕乱码中文乱码51精品 | 男人的天堂2018无码 | 国产成人精品一区二区在线小狼 | 77777熟女视频在线观看 а天堂中文在线官网 | 成人精品视频一区二区三区尤物 | 久久久精品人妻久久影视 | 无码av免费一区二区三区试看 | 国产免费久久精品国产传媒 | 岛国片人妻三上悠亚 | 国产特级毛片aaaaaa高潮流水 | 狂野欧美性猛交免费视频 | 红桃av一区二区三区在线无码av | 无码av最新清无码专区吞精 | а√天堂www在线天堂小说 | 亚洲色偷偷男人的天堂 | 无码av最新清无码专区吞精 | 欧美激情一区二区三区成人 | 欧美激情内射喷水高潮 | 成 人影片 免费观看 | 国产午夜无码精品免费看 | 国産精品久久久久久久 | 在线成人www免费观看视频 | 成人女人看片免费视频放人 | 在线观看国产午夜福利片 | 色偷偷人人澡人人爽人人模 | 国产做国产爱免费视频 | 日韩欧美成人免费观看 | 国产精品第一国产精品 | 任你躁在线精品免费 | 国产精品多人p群无码 | 日本精品人妻无码免费大全 | 免费观看又污又黄的网站 | 国语精品一区二区三区 | 国产亚洲精品久久久久久国模美 | 久久综合色之久久综合 | 欧美日韩视频无码一区二区三 | 亚洲精品综合五月久久小说 | 久久久久久亚洲精品a片成人 | 久久久久99精品国产片 | 精品 日韩 国产 欧美 视频 | 人妻少妇被猛烈进入中文字幕 | 樱花草在线社区www | 色狠狠av一区二区三区 | 色窝窝无码一区二区三区色欲 | 中国女人内谢69xxxx | 亚洲人成网站在线播放942 | 又大又黄又粗又爽的免费视频 | 九九久久精品国产免费看小说 | 国产精品久久久久无码av色戒 | 国内精品九九久久久精品 | 内射后入在线观看一区 | 日韩人妻少妇一区二区三区 | 免费看男女做好爽好硬视频 | 日本熟妇大屁股人妻 | 日日麻批免费40分钟无码 | 麻豆成人精品国产免费 | 无码人妻丰满熟妇区毛片18 | 国产成人综合美国十次 | 99精品国产综合久久久久五月天 | a在线亚洲男人的天堂 | 亚洲精品成人av在线 | 亚洲经典千人经典日产 | 国产另类ts人妖一区二区 | 亚洲中文字幕无码中文字在线 | 国产精品亚洲lv粉色 | 免费网站看v片在线18禁无码 | 成在人线av无码免观看麻豆 | 色爱情人网站 | 亚洲欧美日韩国产精品一区二区 | 成人试看120秒体验区 | 国产乱人伦偷精品视频 | 一本久久a久久精品vr综合 | 日韩欧美中文字幕公布 | 亚洲精品中文字幕 | 免费中文字幕日韩欧美 | 在线播放免费人成毛片乱码 | 人妻尝试又大又粗久久 | 国产精品无码永久免费888 | 无码人妻少妇伦在线电影 | 欧美性生交活xxxxxdddd | 男女爱爱好爽视频免费看 | 久久精品国产亚洲精品 | 99久久久国产精品无码免费 | 一区二区三区乱码在线 | 欧洲 | 性欧美videos高清精品 | 午夜熟女插插xx免费视频 | 精品厕所偷拍各类美女tp嘘嘘 | 性啪啪chinese东北女人 | 97人妻精品一区二区三区 | 精品偷自拍另类在线观看 | 欧美人妻一区二区三区 | 99久久亚洲精品无码毛片 | 国产又粗又硬又大爽黄老大爷视 | 欧洲熟妇精品视频 | 在教室伦流澡到高潮hnp视频 | 亚洲一区二区三区在线观看网站 | 人妻与老人中文字幕 | 最近免费中文字幕中文高清百度 | 综合人妻久久一区二区精品 | 天天做天天爱天天爽综合网 | 全球成人中文在线 | 少妇人妻av毛片在线看 | 国产熟妇高潮叫床视频播放 | 国产suv精品一区二区五 | 亚洲精品午夜国产va久久成人 | 国产精品人人爽人人做我的可爱 | 中文字幕中文有码在线 | 国产精品无码成人午夜电影 | 成人无码视频在线观看网站 | 成年美女黄网站色大免费全看 | 色一情一乱一伦 | 欧美精品在线观看 | 成在人线av无码免费 | 国产精品鲁鲁鲁 | 国产精品二区一区二区aⅴ污介绍 | 国产无套粉嫩白浆在线 | 欧美熟妇另类久久久久久多毛 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久精品中文字幕大胸 | 日本高清一区免费中文视频 | 国产免费久久精品国产传媒 | 2019nv天堂香蕉在线观看 | 国产区女主播在线观看 | 老熟妇乱子伦牲交视频 | 国产特级毛片aaaaaa高潮流水 | 欧美精品在线观看 | 亚洲精品一区二区三区婷婷月 | 在线 国产 欧美 亚洲 天堂 | 日本一本二本三区免费 | 天天摸天天透天天添 | 亚洲 欧美 激情 小说 另类 | 欧美国产日韩亚洲中文 | 午夜免费福利小电影 | 学生妹亚洲一区二区 | 国产内射爽爽大片视频社区在线 | 日本爽爽爽爽爽爽在线观看免 | 精品久久久中文字幕人妻 | 日本欧美一区二区三区乱码 | 国产av剧情md精品麻豆 | 亚洲欧美国产精品久久 | 亚洲a无码综合a国产av中文 | 中文字幕人妻无码一区二区三区 | 免费男性肉肉影院 | 人妻无码αv中文字幕久久琪琪布 | 亚洲第一网站男人都懂 | 少妇性l交大片 | 大肉大捧一进一出好爽视频 | 高清国产亚洲精品自在久久 | 国产人成高清在线视频99最全资源 | 免费国产黄网站在线观看 | 日韩欧美成人免费观看 | 久久99精品久久久久久 | 色欲人妻aaaaaaa无码 | 久久亚洲中文字幕无码 | 中国女人内谢69xxxx | 国产婷婷色一区二区三区在线 | 丰满岳乱妇在线观看中字无码 | 欧美日韩色另类综合 | 黑人巨大精品欧美一区二区 | 在线精品亚洲一区二区 | 纯爱无遮挡h肉动漫在线播放 | 日本一区二区三区免费高清 | 人妻尝试又大又粗久久 | 大肉大捧一进一出好爽视频 | 成人无码视频在线观看网站 | 熟女少妇在线视频播放 | 亚洲精品国产精品乱码视色 | 天堂无码人妻精品一区二区三区 | 久久亚洲中文字幕无码 | 人人爽人人爽人人片av亚洲 | 欧美性生交xxxxx久久久 | 亚洲国产精品无码久久久久高潮 | 久久久中文久久久无码 | 国精品人妻无码一区二区三区蜜柚 | 青青草原综合久久大伊人精品 | 亚洲午夜无码久久 | 亚洲а∨天堂久久精品2021 | 精品欧洲av无码一区二区三区 | 日韩精品久久久肉伦网站 | 奇米影视7777久久精品 | 亚洲精品中文字幕乱码 | 成人一在线视频日韩国产 | 大地资源中文第3页 | 水蜜桃亚洲一二三四在线 | 性欧美牲交xxxxx视频 | 东京热无码av男人的天堂 | 日本丰满熟妇videos | 99精品国产综合久久久久五月天 | 精品久久久久香蕉网 | 捆绑白丝粉色jk震动捧喷白浆 | 中文字幕日产无线码一区 | 无码人妻av免费一区二区三区 | 亚洲国产一区二区三区在线观看 | 国产内射老熟女aaaa | 又大又黄又粗又爽的免费视频 | 99久久人妻精品免费一区 | 国产内射老熟女aaaa | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲の无码国产の无码影院 | 色 综合 欧美 亚洲 国产 | 精品国产一区二区三区四区 | 免费视频欧美无人区码 | 十八禁真人啪啪免费网站 | 色欲综合久久中文字幕网 | 精品国产青草久久久久福利 | 一本加勒比波多野结衣 | 亚洲精品成a人在线观看 | 美女黄网站人色视频免费国产 | 麻豆国产人妻欲求不满 | 国产精品高潮呻吟av久久 | 日本va欧美va欧美va精品 | 国内精品人妻无码久久久影院蜜桃 | 波多野结衣高清一区二区三区 | 无码帝国www无码专区色综合 | 亚洲熟妇色xxxxx亚洲 | 亚洲一区二区三区四区 | 精品国产成人一区二区三区 | 夜夜躁日日躁狠狠久久av | 国产成人精品三级麻豆 | 中文字幕av伊人av无码av | 欧洲熟妇色 欧美 | 国产精品第一区揄拍无码 | 国产亚洲精品久久久久久国模美 | 欧美丰满少妇xxxx性 | 亚洲男人av天堂午夜在 | 国产人妻精品一区二区三区不卡 | 亚洲中文字幕av在天堂 | 女人和拘做爰正片视频 | 国内少妇偷人精品视频 | 国产精品成人av在线观看 | 国产激情无码一区二区app | 国产av久久久久精东av | 久久久精品人妻久久影视 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲精品一区二区三区在线观看 | 国产成人综合在线女婷五月99播放 | 亚洲精品一区三区三区在线观看 | 欧美日韩一区二区综合 | 国产高潮视频在线观看 | 精品无码成人片一区二区98 | 内射老妇bbwx0c0ck | 国产精品久久久 | 欧洲熟妇精品视频 | 亚洲 欧美 激情 小说 另类 | 亚洲色欲色欲天天天www | 欧美熟妇另类久久久久久多毛 | 成人精品一区二区三区中文字幕 | 久久aⅴ免费观看 | 亚洲日韩一区二区 | 欧美性黑人极品hd | 成在人线av无码免观看麻豆 | 成人影院yy111111在线观看 | 免费播放一区二区三区 | 日日摸天天摸爽爽狠狠97 | 亚洲s码欧洲m码国产av | 天天av天天av天天透 | 中文字幕乱码中文乱码51精品 | 又大又紧又粉嫩18p少妇 | 一个人看的视频www在线 | 国产性生交xxxxx无码 | 天天拍夜夜添久久精品 | 亚洲精品中文字幕乱码 | 久久精品成人欧美大片 | 色婷婷综合中文久久一本 | 国产在线精品一区二区三区直播 | 在线天堂新版最新版在线8 | 久久亚洲精品成人无码 | 伊人久久大香线焦av综合影院 | 给我免费的视频在线观看 | 欧美日韩一区二区综合 | 日韩无套无码精品 | 一个人看的视频www在线 | 97久久精品无码一区二区 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品美女久久久网av | 亚洲最大成人网站 | 亚洲成av人片在线观看无码不卡 | 国产人妻人伦精品1国产丝袜 | 亚洲色偷偷偷综合网 | 亚洲人成影院在线观看 | 婷婷丁香六月激情综合啪 | 少妇的肉体aa片免费 | 中文字幕乱妇无码av在线 | 亚洲热妇无码av在线播放 | 久久精品女人天堂av免费观看 | 永久黄网站色视频免费直播 | 亚洲无人区午夜福利码高清完整版 | 亚洲精品欧美二区三区中文字幕 | 免费国产黄网站在线观看 | 一本大道伊人av久久综合 | 精品aⅴ一区二区三区 | 野外少妇愉情中文字幕 | 国产av人人夜夜澡人人爽麻豆 | 自拍偷自拍亚洲精品被多人伦好爽 | 无码av最新清无码专区吞精 | 国产乡下妇女做爰 | 精品日本一区二区三区在线观看 | 老司机亚洲精品影院无码 | 久久午夜夜伦鲁鲁片无码免费 | 伊人久久大香线蕉午夜 | 女人被男人爽到呻吟的视频 | 性色av无码免费一区二区三区 | 日产国产精品亚洲系列 | 精品国产一区二区三区av 性色 | 日日天日日夜日日摸 | 人妻插b视频一区二区三区 | 亚洲乱码中文字幕在线 | 麻豆果冻传媒2021精品传媒一区下载 | 色五月五月丁香亚洲综合网 | 久久综合久久自在自线精品自 | 久久久国产精品无码免费专区 | 国产精品高潮呻吟av久久 | 欧美真人作爱免费视频 | 欧美日韩色另类综合 | 麻豆蜜桃av蜜臀av色欲av | 亚洲精品午夜无码电影网 | 国产精品99久久精品爆乳 | 免费观看的无遮挡av | 性生交大片免费看l | 亚洲国产欧美国产综合一区 | 国产精品嫩草久久久久 | 少妇一晚三次一区二区三区 | 久久国产精品精品国产色婷婷 | 正在播放老肥熟妇露脸 | 人妻熟女一区 | 国产人成高清在线视频99最全资源 | 国产偷国产偷精品高清尤物 | 精品久久久无码人妻字幂 | 亚洲精品一区二区三区婷婷月 | 亚洲一区二区三区 | 丰满岳乱妇在线观看中字无码 | 亚洲一区av无码专区在线观看 | 无码精品人妻一区二区三区av | 人人澡人摸人人添 | 亚洲乱码国产乱码精品精 | 国产精品久久久久7777 | 午夜免费福利小电影 | 黄网在线观看免费网站 | 亚洲精品中文字幕久久久久 | 98国产精品综合一区二区三区 | 无码国产色欲xxxxx视频 | 狠狠cao日日穞夜夜穞av | 影音先锋中文字幕无码 | 亚洲gv猛男gv无码男同 | 丰满护士巨好爽好大乳 | 2020最新国产自产精品 | 一区二区三区高清视频一 | 高中生自慰www网站 | 无套内谢老熟女 | 爽爽影院免费观看 | 丰满岳乱妇在线观看中字无码 | 日日摸日日碰夜夜爽av | 人人妻人人澡人人爽人人精品 | 性色欲网站人妻丰满中文久久不卡 | 色老头在线一区二区三区 | 在教室伦流澡到高潮hnp视频 | 一本大道伊人av久久综合 | 巨爆乳无码视频在线观看 | 综合激情五月综合激情五月激情1 | 国产精品久久久一区二区三区 | 国精品人妻无码一区二区三区蜜柚 | 久久久久久国产精品无码下载 | 国产无套粉嫩白浆在线 | 国产午夜亚洲精品不卡 | 激情人妻另类人妻伦 | 久久久亚洲欧洲日产国码αv | 亚洲精品久久久久久久久久久 | 国产午夜亚洲精品不卡 | 国产后入清纯学生妹 | ass日本丰满熟妇pics | а天堂中文在线官网 | 性色欲情网站iwww九文堂 | 中文字幕av无码一区二区三区电影 | 乱人伦人妻中文字幕无码久久网 | 夜夜影院未满十八勿进 | 国产高潮视频在线观看 | 四虎影视成人永久免费观看视频 | 国产莉萝无码av在线播放 | 精品aⅴ一区二区三区 | 国产成人无码av一区二区 | 欧美国产日韩久久mv | 久久人妻内射无码一区三区 | 日韩av无码中文无码电影 | 久久精品无码一区二区三区 | 激情爆乳一区二区三区 | 中文字幕无码人妻少妇免费 | 一区二区三区高清视频一 | 97精品人妻一区二区三区香蕉 | ass日本丰满熟妇pics | 波多野结衣乳巨码无在线观看 | 国产免费久久久久久无码 | 国产精品成人av在线观看 | 日本精品久久久久中文字幕 | 国产人妻精品一区二区三区不卡 | 97久久精品无码一区二区 | 亚洲男女内射在线播放 | 欧美日本日韩 | 亚洲人成影院在线观看 | 日韩精品一区二区av在线 | 少妇性l交大片欧洲热妇乱xxx | 亚洲午夜福利在线观看 | 国产激情一区二区三区 | 天天做天天爱天天爽综合网 | 妺妺窝人体色www在线小说 | 日本护士毛茸茸高潮 |