npm的知识要点

news/2025/2/16 3:25:15/

  前端开发趋向于分散隔离,多以组件、包的形式来进行。虽然不使用node、npm、webpack、babel等工具依然可以进行前端开发,但这是远离和拒绝新技术、新理念的做法。

  npm(node package manage)是基于共享理念的实践、基于node的JavaScript编写的包管理工具,官网地址:npm。

  它是Node.js默认的软件包管理工具,安装Node默认就安装好了npm。Node中文网站

  npm很好地解决了前端开发中的依赖问题。

  以前的开发工具,每一种开发工具都有很多人在使用,但是在共享上却不方便,某个人或者团队编写的代码不能很方便地被其他人引用和加载,简单的还好,下载到本地添加到项目,可是如果下载的软件包依赖其他的,那就麻烦来了。相比以前C#在这方面做了改进,比如Nuget,但相比npm还是有距离。

  与npm有相同作用的还有cnpm、yarn等。

  1、安装与更新

  下载Node,安装完毕后即可。安装完毕后可以查看node和npm的版本。

node -v
npm -v

  正确更新npm,可以使用命令:

npm install npm -g

  我试了:

npm update npm -g

  更新并不报错,可是没有更新到最新的版本。
  与删除其他模块一样,可以删除npm:

npm uninstall npm

  2、设置代理和切换下载源

  我这里是通过代理上的外网,第一步必须设置软件的代理:

npm config set proxy http://代理地址
npm config set https-proxy http://代理地址

  设置为国内的下载源:

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

  或者先看有哪些下载源(先安装nrm):

nrm ls

  选择淘宝下载源:

nrm use taobao

  3、常用命令

  ⑴ 快速初始化项目:将会生成一个 package.json 文件并将其放置在当前目录中。

npm init -y

  使用缺省的配置创建项目,可以修改package.json文件。
  ⑵执行脚本命令:将执行packjson包中scripts字段定义的脚本命令。

  例如:新创建一个项目后在当前目录下写一个GetInfo.js

console.log(process.env.npm_package_name); //得到包名
console.log(process.env.npm_package_version);//得到版本信息
console.log(process.env.npm_package_config_Tips);//得到config下的属性定义值

  package.json内容:

{"name": "20230204","version": "1.0.0","description": "","main": "index.js","config":{"Tips":"Knowledge points of npm"},"scripts": {"GetInfo": "node GetInfo.js"},"keywords": [],"author": "","license": "ISC"
}

  执行脚本命令:

npm run GetInfo

  利用执行脚本命令这个特性,可以完成很多操作,比如可以是DOS的一系列操作等。

  新建一个DOS命令脚本ACopy.bat:

md backup
copy *.js backup

  修改package.json文件:

{"name": "20230204","version": "1.0.0","description": "","main": "index.js","scripts": {"GetInfo": "node GetInfo.js","ACopy": "ACopy"},"keywords": [],"author": "","license": "ISC"
}

  运行即可完成ACopy文件内的指定操作:

npm run ACopy

  这些操作可以是混合的,可以完成比较复杂的工作。

  ⑶使用npm安装包

  先到npm网站查询具体包:

   然后在项目中进行安装:

npm i 包名
或者
npm install 包名

  npm有一定的纠错功能,就是如果你输入了i、ins、in、insta或者install都可以进行安装。

  可以拷贝别的项目package.json中的生产环境和开发环境的包名到自己的项目packjson中,运行:

npm install

  安装包的最新版本

npm install 包名@latest

  安装指定版本号的包

npm install 包名@指定版本号

  生产环境和开发环境的指定

  -D 安装包到开发环境
  -S 安装包到生产环境

  ⑷更改下载源地址

npm config set registry 地址

  ⑸查看npm下载源地址

npm get registry

  ⑹查看配置

npm config list

  ⑺查看项目依赖

npm ls

  ⑻查看全局项目依赖

npm ls -g

  ⑼查看帮助

npm 命令 --help
npm --help

  ⑽查看包信息

//打开包主页
npm home 包名
//查看包的代码
npm repo 包名
//查看包的详细信息
npm info 包名
//查看本地安装的指定包及版本信息
npm ls 包名

  4、npx和nrm

  ⑴npx:npx 是 npm 中的一个工具,它允许你在不需要安装包的情况下运行 npm 包中的命令,它是随 npm 一起安装的,因此不需要单独安装。
  ⑵nrm:nrm (Node Registry Manager) 是一个 npm 源管理器,它简化了安装源【 npm 公共源和私有源】的切换。它允许你快速地在不同的源之间切换,以获得更快的下载速度,对于我们来说就是npm源和淘宝源之间的切换。

  安装:在命令行中运行以下命令安装 nrm:

npm install -g nrm

  更新:在命令行中运行以下命令更新 nrm:

npm update -g nrm

  删除:在命令行中运行以下命令删除 nrm:

npm uninstall -g nrm

  5、package-lock.json和.package-lock.json

  package-lock.json 和 .package-lock.json 都是 npm 用于管理项目依赖关系的文件。
  package-lock.json 文件位于项目的根目录下,是项目依赖关系的一份快照。它记录了项目依赖的所有模块的版本号和下载链接,在安装依赖时可以保证每次安装的模块版本相同,避免由于模块版本的不一致导致项目运行出错。
  .package-lock.json 文件位于 node_modules 目录下,是每个依赖模块的依赖关系的快照。它记录了每个依赖模块的版本号和下载链接,在安装依赖时可以保证每次安装的模块版本相同,避免由于模块版本的不一致导致项目运行出错。

  6、npm是基于node.js写的JavaScript脚本文件

  npm是基于Node.js写的一系列DOS脚本和JavaScript脚本,在Node的安装目录下【C:\Program Files\nodejs\】有npm.CMD【DOS命令脚本】,它的脚本文件内容:

:: Created by npm, please don't edit manually.
@ECHO OFFSETLOCALSET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (SET "NODE_EXE=node"
)SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)"%NODE_EXE%" "%NPM_CLI_JS%" %*

  这个脚本最终是执行npm-cli.js,然后是cli.js。


http://www.ppmy.cn/news/22668.html

相关文章

字节跳动抖音推荐算法实习生一面凉经

面试大概50分钟 本来投的是头条开发岗位,不知为何被捞到了推荐算法岗位。多位推荐算法hr一直约我面试,说经历和他们部门契合。我从年底推到年后,最后答应面试,这也是读研以来第一次面试。大概是自己准备不充分,一面就…

模拟(一)回型矩阵、螺旋矩阵

回型矩阵_牛客题霸_牛客网 描述 给你一个整数n&#xff0c;按要求输出n∗n的回型矩阵 输入描述&#xff1a; 输入一行&#xff0c;包含一个整数n 1<n<19 输出描述&#xff1a; 输出n行&#xff0c;每行包含n个正整数. 示例1 输入&#xff1a; 4 输出&#xff1a; 1 2 3 4…

5G NR R16 SPS

一 简介 今天给大家介绍一个R16的小topic&#xff1a;SPS——Semi-persistent Scheduling(半持续调度)&#xff0c;与传统的Dynamic Scheduling(动态调度)相对应。 首先解释什么是SPS&#xff0c;我们知道目前常用的调度方式是动态调度&#xff0c;也就是一个DCI指示一个PDSC…

【内网安全-隧道搭建】内网穿透_Frp上线、测试

目录 Frp&#xff08;简易上线&#xff09; 1、简述&#xff1a; 2、工具&#xff1a; 3、使用&#xff1a; 1、准备&#xff1a; 2、服务端&#xff08;公网&#xff09;&#xff1a; 2、客户端&#xff08;内网&#xff09;&#xff1a; 3、测试方法&#xff1a; 4、…

乾元通多卡聚合通信设备保障生态环境监测网络

乾元通多卡聚合通信设备保障生态环境监测网络 针对目前城市大气环境监测网格化建设&#xff0c;推出的新一代城市网格化大气环境监测系统&#xff0c;可以实现城市区域环境多维一体化监测管理&#xff0c;该设备主要用于监测大气环境中的PM10、TSP、PM2.5等颗粒物浓度&#xff…

最短路之Floyd-Warshall(10张图解)

只有五行的算法 四种最短路算法 Floyd算法 时间复杂度高&#xff0c;但实现容易&#xff08;5行核心代码&#xff09;&#xff0c;可解决负权边&#xff0c;适用于数据范围小的 Dijkstra算法 不能解决负权边&#xff0c;但具有良好扩展性&#xff0c;且复杂度较低 Bellman-For…

【自学Python】Python字符串首字母大写

Python字符串首字母大写 大纲 Python字符串首字母大写教程 在开发过程中&#xff0c;很多时候我们需要将一个 字符串 首字母转成大写的需求&#xff0c;在 Python 中&#xff0c;将某个字符串的首字母转成大写的函数为 title() 。 Python title()函数详解 语法 S.title() …

【C/C++基础练习题】复习题卷一

定义变量时&#xff0c;变量的存储类说明符有的可以省略 在函数内&#xff0c;定义变量时储存类型符可以省略的是auto 增1和减1运算符只可以作用在在变量上&#xff0c;不可以用在表达式和常量上 在定义一个数组时&#xff0c;对其部分元素进行了初始化&#xff0c;没有初始化的…