Npm | 青训营

80 阅读5分钟

Npm小知识

1.Npm是什么

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

下面是关于 npm 的快速介绍:

npm 由三个独立的部分组成:

  • 网站
  • 注册表(registry)
  • 命令行工具 (CLI)

网站 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。

注册表 是一个巨大的数据库,保存了每个包(package)的信息。

CLI 通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

2.常用Npm指令

npm -v //查看npm版本
npm uninstall <package name>  //卸载模块
npm init   //初始化一个package.json文件
npm init --y  //初始并且默认配置package.json文件
npm list  //查看当前项目安装的所有模块
npm update <package name>  //更新模块
npm run <name>   //执行脚本
eg: npm run test
使用淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org

npm安装:

全局安装 or 本地安装

# 本地安装:
#将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块
npm install <package name>
eg:npm install jquery

# 全局安装:
#将安装包放在 /usr/local 下或者你 node 的安装目录,可以直接在命令行里使用
npm install <package name> -global
npm install <package name> -g
#简写
npm i <package name>
npm install <tarball url> //通过Github代码库地址安装

#安装不同版本
npm install <package name>@版本号

依赖关系

–save:模块名将被添加到 dependencies,可以简化为参数-S。
#生产环境依赖 (程序正常运行需要加载的依赖)

–save-dev:模块名将被添加到 devDependencies,可以简化为参数-D。
#开发环境依赖 (比如:测试或者文档框架等)

npm install <package name> --save
npm install <package name> --save-dev
# 或者
npm install sax -S
npm install node-tap -D

3.Package.json文件

{
    "name": "yindong",
    "version":"0.0.1",
    "description": "antd-theme",
    "keywords":["node.js","antd", "theme"],
    "homepage": "https://zhiqianduan.com",
    "bugs":{"url":"http://path/to/bug","email":"yindong@xxxx.com"},
    "license": "ISC",
    "author": "yindong",
    "contributors":[{"name":"yindong","email":"yindong@xxxx.com"}],
    "files": "",
    "main": "./dist/default.js",
    "bin": "",
    "man": "",
    "directories": "",
    "repository": {
		"type": "git",
		"url": "https://path/to/url"
	},
    "scripts": {
      "start": "webpack serve --config webpack.config.dev.js --progress"
    },
    "config": { "port" : "8080" },
    "dependencies": {},
    "devDependencies": {
        "@babel/core": "^7.14.3",
        "@babel/preset-env": "^7.14.4",
        "@babel/preset-react": "^7.13.13",
        "babel-loader": "^8.2.2",
        "babel-plugin-import": "^1.13.3",
        "glob": "^7.1.7",
        "less": "^3.9.0",
        "less-loader": "^9.0.0",
        "style-loader": "^2.0.0",
        "webpack": "^5.38.1",
        "webpack-cli": "^4.7.0",
        "webpack-dev-server": "^3.11.2"
    },
    "peerDependencies": {
        "tea": "2.x"
    },
    "bundledDependencies": [
        "renderized", "super-streams"
    ],
    "engines": {"node": "0.10.x"},
	  "os" : [ "win32", "darwin", "linux" ],
    "cpu" : [ "x64", "ia32" ],
    "private": false,
    "publishConfig": {}
  }

如上是一个package.json文件

package.json文件是一个JSON对象,这从他的后缀名.json就可以看出来,该对象的每一个成员就是当前项目的一项设置

其中:

name:项目的名称,必须小于等于214个字符,不能以.或_开头,不能有大写字母,因为名称最终成为URL的一	   部分因此不能包含任何非URL安全字符。 
version:项目的版本号,一般是x.x.x
description:用于编写描述信息。有助于人们在npm库中搜索的时候发现你的模块。
license:当前项目的协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制。
		MIT 是最少约束的选择。
		GPL 是最多约束的。
main:加载的入口文件,require导入的时候就会加载这个文件。这个字段的默认值是模块根目录下面的		 index.js。
scripts:指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命		令。
dependencies:字段指定了项目运行所依赖的模块
devDependencies:指定项目开发所需要的模块。
				当安装依赖的时候使用:
				--save参数:表示将该模块写入dependencies属性
				--save-dev:表示将该模块写入devDependencies属性
				模块名称,后面是对应模块的版本号。
				版本号遵循“大版本.次要版本.小版本”的格式规定。
				~:7.14.3 中表示安装5.38.x的所有版本
				^:7.14.3 中表示安装所有7.x.x的所有版本

其中更多的可以看下面这篇帖子

你真的了解package.json吗?来看看吧,这可能是最全的package解析 - 掘金 (juejin.cn)

4.CDN

CDN的全称是Content Delivery Network,即内容分发网络。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。

CDN可以加快用户访问网络资源的速度和稳定性,减轻源服务器的访问压力。

实现方法: 通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接和负载状况以及到用户的距离响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,加快访问速度。

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

5.常用的CDN网站

BootCDN:www.bootcdn.cn/

七牛云: www.staticfile.org/

CDNJS: cdnjs.com/