标签搜索

npm常见操作

anker
2023-10-21 / 0 评论 / 80 阅读 / 正在检测是否收录...

学习npm总给我一个熟悉感觉,基本上和学习C/C++的make工具一样。
在make工具中,项目下一般有makefile文件,对应到npm也是一样。

当执行npm init时,会生成一个package.js文件,这个文件描述当前项目信息。它定义了当在其他地方使用npm install安装本项目时需要安装什么依赖。另外也定义了支持哪些间接执行shell命令等等。这几乎就又是一个make工具。

可能通过help查看他支持功能

npm help
npm 命令 --help

总体上就是创建/安装/卸载/更新/锁定某个库包到项目中或者本机全局环境中。

核心操作

类似C的hello world,他的第1个重要的命令是npm init,作用是在当前目录创建一个package.js, 之后所有命令都是围绕在这个文件基本的操作。

package.js文件包含一些重要字段:
name: 表示包名
version:表示版本
entry point:表示入口文件,一般是传递给Node程序,相关于执行了node entry.js
script:表示通过npm run xxx 中 xxx对应的npm或者shell命令
dependencies/devDependencies: 当前项目依赖js库及其版本
description/keywords/author/license:项目简介描述信息

使用npm init -y后也可以再次设置一些项目配置信息

npm config set init.author.name YOUR_NAME  
npm config set init.author.email YOUR_EMAIL  

执行命令

npm run [cmd]
如果不指定cmd则会罗列出支持执行的命令(script字段配置中)

包管理

1、查看react包主页

npm home react

2、查react包信息

npm info react

3、安装包

npm install 模块名[@版本] [--save/-S --save-dev/-D] [-g]

可以用@指定版本,npm的版本分为大、次、小三个版本号,用.号分开,样式如3.4.1。 如果在版本号前使用^(接受次、小版本变化)、~(只接受小版本变动)、latest(最新版本)。package.json只会保存模糊版本,如果项目只能依赖某个具体版本时,package-lock.json因为会保存具体版本,所以也需要版本git/svn仓库管理。命令样式npm install bootstrap@3.3.7
有另外一个不需要仓库管理package-lock.json文件的办法是,安装特定版本依赖包前用类似npm config set save-prefix='~'命令指定package.json保存允许小版本变动。如果完全不接受版本变化,则用npm config set save-exact true,然后在安装。

模块包是区分生产、开发环境的
--save/-S表示生产环境依赖的模块(会更新package.json中的dependencies字段)。同理也有--save-dev/-D参数更新到开发环境依赖模块。比如给开发环境安装eslint环境(js语法检查模块)命令就是npm install -D eslint。如果不指定是开发环境则默认是生产环境依赖。这个命令在把eslint模块安装在当前目录的node_modules目录下同时也会创建更新package-lock.json文件。

如果需要在本机环境全局安装,则使用-g, 此时可以使用npm root -g查看具体是安装在哪里。或者使用npm list -g查看当前已经安装了哪些全局模块。
一般node_modules目录是不需要进行版本管理的,使用npm install会自动下载模块。
当不指定包时,就会从package.json文件自动下载所有依赖项到本地。

4、查看已经安装包

npm list|ls [-g] [模块名]
如果有指定模块名时,只查指定模块
如果此命令有UNMET DEPENDENCY不满足依赖时,需要重新生成本地包缓存。

npm -fr node_modules/  # 删除已经安装模块
npm cache clean        # 清理npm内部缓存
npm install            # 重新安装

5、查看远程最新版本

npm view 模块名 [version]

6、查看远程指定模块的所有版本

npm view 模块名 versions

7、卸载本地/全局模块

npm uninstall [-g] 模块名

8、搜索远程模块

npm search 模块名

9、更新本地/全局模块

npm update [-g] 模块名

10、安装项目所有依赖模块

npm ci
会删除node_modules,但不会更新package.json

0

评论 (0)

取消