ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

npm

2021-05-08 23:01:31  阅读:170  来源: 互联网

标签:npm node cnpm package json registry


npm

  • node package manage(node包管理器)
  • 通过npm命令安装jQuery包(npm install --save jquery),在安装时加上--save会主动生成说明书文件信息(将安装文件的信息添加到package.json里面)

npm网站

​ npmjs.com 网站 是用来搜索npm包的

npm命令行工具

npm是一个命令行工具,只要安装了node就已经安装了npm。

npm也有版本概念,可以通过npm --version来查看npm的版本

升级npm(自己升级自己):

npm install --global npm

常用命令

  • npm init(生成package.json说明书文件)
    • npm init -y(可以跳过向导,快速生成)
  • npm install
    • 一次性把dependencies选项中的依赖项全部安装
    • 简写(npm i)
  • npm install 包名
    • 只下载
    • 简写(npm i 包名)
  • npm install --save 包名
    • 下载并且保存依赖项(package.json文件中的dependencies选项)
    • 简写(npm i 包名)
  • npm uninstall 包名
    • 只删除,如果有依赖项会依然保存
    • 简写(npm un 包名)
  • npm uninstall --save 包名
    • 删除的同时也会把依赖信息全部删除
    • 简写(npm un 包名)
  • npm help
    • 查看使用帮助
  • npm 命令 --help
    • 查看具体命令的使用帮助(npm uninstall --help)

解决npm被墙问题

npm存储包文件的服务器在国外,有时候会被墙,速度很慢,所以需要解决这个问题。

https://developer.aliyun.com/mirror/NPM?from=tnpm淘宝的开发团队把npm在国内做了一个镜像(也就是一个备份)。

安装淘宝的cnpm:

npm install -g cnpm --registry=https://registry.npm.taobao.org;
#在任意目录执行都可以
#--global表示安装到全局,而非当前目录
#--global不能省略,否则不管用
npm install --global cnpm

安装包的时候把以前的npm替换成cnpm

#走国外的npm服务器下载jQuery包,速度比较慢
npm install jQuery;

#使用cnpm就会通过淘宝的服务器来下载jQuery
cnpm install jQuery;

如果不想安装cnpm又想使用淘宝的服务器来下载:

npm install jquery --registry=https://npm.taobao.org;

但是每次手动加参数就很麻烦,所以我们可以把这个选项加入到配置文件中:

npm config set registry https://npm.taobao.org;

#查看npm配置信息
npm config list;

只要经过上面的配置命令,则以后所有的npm install都会通过淘宝的服务器来下载

补充:

npm淘宝镜像

一、最顶级的使用

1、安装cnpm

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

2、然后就可以cnpm安装依赖包了

cnpm i -g  vue vue-cli

3、cnpm config ls 查看

E:\我的项目\2018-08>cnpm config ls
; cli configs
disturl = "https://npm.taobao.org/mirrors/node"
metrics-registry = "https://registry.npm.taobao.org/"
registry = "https://registry.npm.taobao.org/"
scope = ""
user-agent = "npm/6.3.0 node/v8.11.3 win32 x64"
userconfig = "C:\\Users\\Administrator\\.cnpmrc"

; node bin location = D:\Program Files\nodejs\node.exe
; cwd = E:\我的项目\2018-08
; HOME = C:\Users\Administrator
; "npm config ls -l" to show all defaults.


E:\我的项目\2018-08>

会发现里面的registry变成了淘宝的镜像(仓库):https://registry.npm.taobao.org/

【本文里面的“镜像”等同于“仓库”,下同】

二、原始的npm

1、查看原始配置 npm config ls

E:\我的项目\2018-08>npm config ls
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"

; userconfig C:\Users\Administrator\.npmrc
cache = "D:\\Program Files\\nodejs\\node_cache"
prefix = "D:\\Program Files\\nodejs\\node_global"

; builtin config undefined

; node bin location = D:\Program Files\nodejs\node.exe
; cwd = E:\我的项目\2018-08
; HOME = C:\Users\Administrator
; "npm config ls -l" to show all defaults.


E:\我的项目\2018-08>

会发现里面的registry是npm原始的镜像:https://registry.npmjs.org/

2、npm临时使用淘宝镜像安装依赖包

npm i -g express --registry https://registry.npm.taobao.org

3、npm持久使用淘宝镜像安装依赖包

//可以通过配置设置registry
npm config set registry https://registry.npm.taobao.org
npm i -g express

注意,不推荐这样子,因为把npm的镜像完全设为了淘宝的镜像,万一我们有些依赖包只有npm原始镜像里面才有,而淘宝里面没有,那就悲剧了。所以分开npm和cnpm是最好的。

三、一些常用设置

1、查看【npm 与 cnpm 是2个不同的】

npm config ls
cnpm config ls

2、设置:主要是设置cacheprefix

npm cofig set cache "D:\Program Files\nodejs\node_cache"
npm cofig set prefix "D:\Program Files\nodejs\node_global"

cnpm cofig set cache "D:\Program Files\nodejs\node_cache"
cnpm cofig set prefix "D:\Program Files\nodejs\node_global"

3、最后的结果

E:\我的项目\2018-08>cnpm config ls
; cli configs
disturl = "https://npm.taobao.org/mirrors/node"
metrics-registry = "https://registry.npm.taobao.org/"
registry = "https://registry.npm.taobao.org/"
scope = ""
user-agent = "npm/6.3.0 node/v8.11.3 win32 x64"
userconfig = "C:\\Users\\Administrator\\.cnpmrc"

; userconfig C:\Users\Administrator\.cnpmrc
cache = "D:\\Program Files\\nodejs\\node_cache"
prefix = "D:\\Program Files\\nodejs\\node_global"

; node bin location = D:\Program Files\nodejs\node.exe
; cwd = E:\我的项目\2018-08
; HOME = C:\Users\Administrator
; "npm config ls -l" to show all defaults.


E:\我的项目\2018-08>npm config ls
; cli configs
metrics-registry = "https://registry.npmjs.org/"
scope = ""
user-agent = "npm/5.6.0 node/v8.11.3 win32 x64"

; userconfig C:\Users\Administrator\.npmrc
cache = "D:\\Program Files\\nodejs\\node_cache"
prefix = "D:\\Program Files\\nodejs\\node_global"

; builtin config undefined

; node bin location = D:\Program Files\nodejs\node.exe
; cwd = E:\我的项目\2018-08
; HOME = C:\Users\Administrator
; "npm config ls -l" to show all defaults.


E:\我的项目\2018-08>

每一个项目都要有一个package.json文件(包描述文件,就像产品的说明书一样)

这个文件可以通过npm init自动初始化出来


D:\code\node中的模块系统>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (node中的模块系统)
Sorry, name can only contain URL-friendly characters.
package name: (node中的模块系统) cls
version: (1.0.0)
description: 这是一个测试项目
entry point: (main.js)
test command:
git repository:
keywords:
author: xiaochen
license: (ISC)
About to write to D:\code\node中的模块系统\package.json:

{
  "name": "cls",
  "version": "1.0.0",
  "description": "这是一个测试项目",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "xiaochen",
  "license": "ISC"
}


Is this OK? (yes) yes

对于目前来讲,最有用的是dependencies选项,可以用来帮助我们保存第三方包的依赖信息。

如果node_modules删除了也不用担心,只需要在控制面板中npm install就会自动把package.json中的dependencies中所有的依赖项全部都下载回来。

  • 建议每个项目的根目录下都有一个package.json文件
  • 建议执行npm install 包名的时候都加上--save选项,目的是用来保存依赖信息

package.json和package-lock.json

npm 5以前是不会有package-lock.json这个文件

npm5以后才加入这个文件

当你安装包的时候,npm都会生成或者更新package-lock.json这个文件

  • npm5以后的版本安装都不要加--save参数,它会自动保存依赖信息
  • 当你安装包的时候,会自动创建或者更新package-lock.json文件
  • package-lock.json这个文件会包含node_modules中所有包的信息(版本,下载地址。。。)
    • 这样的话重新npm install的时候速度就可以提升
  • 从文件来看,有一个lock称之为锁
    • 这个lock使用来锁版本的
    • 如果项目依赖了1.1.1版本
    • 如果你重新install其实会下载最细版本,而不是1.1.1
    • package-lock.json的另外一个作用就是锁定版本号,防止自动升级

标签:npm,node,cnpm,package,json,registry
来源: https://www.cnblogs.com/ff-upday/p/14746814.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有