npm(一):从npm CLI说起

系列文章:

npm(一):从npm CLI说起

npm(二):剖析 package.json

npm(三):npm包发布、更新、废弃

npm(四):剖析npm包版本管理机制

npm(五):组件发布npm包全流程 (使用rollup打包工具)

npm(六):使用Vue CLI构建 lib 发布npm包

剖析npm依赖管理


目录

npm CLI (npm 命令行) npm 中文文档

npm install 安装模块

npm uninstall 卸载模块 

 npm view 查看npm包信息

npm ls 查看安装的模块

npm init 在项目中引导创建一个package.json文件 

npm root 查看包的安装路径

npm config 管理npm的配置路径

npm cache 管理模块的缓存

npm adduser(npm login)用户登录

npm logout 用户退出登录

npm whoami 显示 npm 用户名

npm link 在本地生成npm 模块链接

npm publish 发布模块

npm unpublish 从注册表中删除一个包

npm deprecate 作废指定包的指定版本

npm version 

1、了解version

2、初始化项目 npm init

3、查看项目版本信息,默认1.0.0 npm version 

4、执行命令,升级版本号

npm access 设置已发布包的访问级别

npm owner 管理包所有者


npm CLI (npm 命令行) npm 中文文档

npm install 安装模块

此命令安装一个包,以及它所依赖的任何包。如果包有 package-lock 或 shrinkwrap 文件,依赖项的安装将由它驱动,npm-shrinkwrap.json如果两个文件都存在,则优先。请参阅package-lock.jsonnpm-shrinkwrap

语法

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 <git-host>:<git-user>/<repo-name>
npm install <git repo url>
npm install <tarball file>
npm install <tarball url>
npm install <folder>

简写: npm i
常见的选项: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
  • npm install:在本地 node_modules 文件夹中安装依赖项。

  • npm install <name>:安装包,默认会安装最新的版本

    • 使用一些额外的标志来控制包的保存位置和方式:

参数 简写参数 作用
--global -g 在全局可访问的位置安装一个包
--save-prod -P 默认值,包将出现在您的dependencies
--save-dev -D 包将出现在您的devDependencies
--save-optional -O 包将出现在您的optionalDependencies
--no-save 防止保存到dependencies
使用上述任何选项将依赖项保存到 package.json 时,还有两个额外的可选标志:
--save-exact -E 保存的依赖项将被配置为一个确切的版本,而不是使用 npm 的默认 semver 范围操作符
--save-bundle -B 保存的依赖项也将添加到您的bundleDependencies列表中
  • npm install <name>@<tag>:安装指定标签引用的包版本

  • npm install <name>@<version>:安装指定版本的包

  • npm install <name>@<version range>:安装与指定版本范围匹配的软件包版本

  • npm install <git repo url>:从托管的git提供程序安装包,使用git克隆它。对于完整的git远程url,只尝试该url。

    • <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

    • <protocol>是以下之一git,git+ssh,git+http,git+https,或 git+file

    • 例子:

      npm install git+ssh://[email protected]:npm/cli.git#v1.0.27
      npm install git+ssh://[email protected]:npm/cli#semver:^5.0
      npm install git+https://[email protected]/npm/cli.git
      npm install git://github.com/npm/cli.git#v1.0.27
      GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://[email protected]:npm/cli.git
  • npm install <tarball file>:安装位于文件系统上的软件包。注意:如果您只想将 dev 目录链接到您的 npm 根目录,您可以使用npm link。

    • 例子:

      npm install ./package.tgz
  • npm install <tarball url>:获取 tarball url,然后安装它。为了区分这个选项和其他选项,参数必须以“http://”或“https://”开头

    • 例子:

          npm install https://github.com/indexzero/forever/tarball/v0.5.6
  • npm install <folder>:

    将包安装在目录中作为当前项目中的符号链接。它的依赖项将在链接之前安装。如果<folder>位于项目的根目录中,它的依赖项可能会node_modules像其他类型的依赖项一样被提升到顶层。

npm uninstall 卸载模块 

例子:

npm uninstall sax

npm uninstall 采用 3 个独占的、可选的标志来保存或更新主 package.json 中的包版本:

  • -S, --save:包将从您的dependencies中删除。

  • -D, --save-dev:包将从您的devDependencies中删除。

  • -O, --save-optional:包将从您的optionalDependencies中删除。

  • --no-save: 包不会从您的package.json文件中删除。

此外,如果你有,npm-shrinkwrap.json那么它也会被更新。

范围是可选的,并遵循npm-scope.

例子:

npm uninstall sax --save
npm uninstall @myorg/privatepackage --save
npm uninstall node-tap --save-dev
npm uninstall dtrace-provider --save-optional
npm uninstall lodash --no-save

 npm view 查看npm包信息

npm view [<@scope>/]<name>[@<version>] [<field>[.<subfield>]...]

别名: info, show, v

npm ls 查看安装的模块

npm init 在项目中引导创建一个package.json文件 

生成一个pakeage.json文件,这个文件主要是用来记录这个项目的详细信息的,它会将我们在项目开发中所要用到的包,以及项目的详细信息等记录在这个项目中

npm init [--force|-f|--yes|-y|--scope]
npm init <@scope> (same as `npx <@scope>/create`)
npm init [<@scope>/]<name> (same as `npx [<@scope>/]create-<name>`)

我在这里详细讲述了package.json: npm(二):剖析 package.json_五虎战画戟-CSDN博客 

npm root 查看包的安装路径

输出 node_modules的路径

npm root 输出当前项目node_modules的路径
npm root -g 输出全局node_modules的路径

npm config 管理npm的配置路径

将配置键设置为该值。如果value被省略,则将其设置为“true”。
npm config set <key> <value> [-g|--global]

获取配置键值
npm config get <key>

删除配置项
npm config delete <key>

显示所有配置设置。使用-l也显示默认值。用于--json 以 json 格式显示设置。
npm config list [-l] [--json]

在编辑器中打开配置文件。使用该--global标志编辑全局配置。
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]

别名: c

例子:

设置npm的registry

  1. 原npm地址:npm config set registry https://registry.npmjs.org
  2. 设置国内镜像:npm config set registry https://registry.npm.taobao.org
  3. 临时修改npm源:npm install module_name --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本地缓存
npm cache clean [<path>]
简写: npm cache clear, npm cache rm

npm cache verify

清除npm本地缓存 npm cache clean

npm adduser(npm login)用户登录

输入npm账号、密码、邮箱登录

npm logout 用户退出登录

npm whoami 显示 npm 用户名

npm link 在本地生成npm 模块链接

npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]

简写: npm ln
cd ~/projects/node-redis    # 进入一个项目,package.json中 name: 'redis'
npm link                    # 1,本地创建一个全局包链接
cd ~/projects/node-bloggy   # 打开一个其他项目
npm link redis              # 2,将一个本地包安装当前项目的node_modules下面

npm link分两步过程

  1. npm link在包文件夹中将在全局文件夹{prefix}/lib/node_modules/<package>中创建一个符号链接,该符号 链接链接到npm link执行命令的包。(prefix的值请参见npm-config)。它还会将包中的任何 bin 链接到{prefix}/bin/{name}.
  2. 在其他位置,npm link package-name将创建从全局安装package-name到node_modules/ 当前文件夹的符号链接。

请注意,package-name取自package.json,而不是来自目录名称。

包名称可以选择性地以范围为前缀。见npm-scope。范围必须以@-符号开头,后跟斜杠。

创建 tarball 时npm publish,链接的包通过解析符号链接“快照”到它们的当前状态。

这对于安装您自己的东西非常方便,这样您就可以对其进行处理和迭代测试,而无需不断重建。

npm link 报错时可查看这里解决解决全局安装包时的 EACCES 权限错误

npm publish 发布模块

npm publish [<tarball>|<folder>] [--tag <tag>] [--access <public|restricted>] [--otp otpcode] [--dry-run]

如果没有指定参数,则发布当前目录
如果没有指定tag,则设置tag为'latest'

发布包时注意点:

  • npm login
  • package.json name存在,并且在npmjs.com没有重名包或相似名称的包。例如:由于react-native已经存在,react.nativereactnative都不可以再创建。
  • package.json version存在,并且版本没有重复

  • 版本遵循语义化标准

npm unpublish 从注册表中删除一个包

警告:删除其他人依赖的库版本通常被认为是不良行为!

如果您的目的是鼓励用户升级,请考虑使用此命令  npm deprecate 

npm deprecate 作废指定包的指定版本

npm deprecate <pkg>[@<version>] <message>

此命令将更新 npm 注册表中指定包所对应的数据条目, 为尝试安装它的所有人提示版本作废的警告信息(如:警告:此项目已重命名为NewProjectName,使用NewProjectName来安装)。

它适用于 版本范围 以及指定版本,因此你可以执行以下操作:

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

你也可以参阅 npm 的取消发布政策了解更多信息。 

npm version 

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | 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

1、了解version

1.0.0-0

主版本号(major).次版本号(minor).修订号(patch)-预发布号(release)

优先级以此递减,每次修改前1面版本号都会影响后面版本号,所以谨慎操作

1、版本格式:主版本号、次版本号、修订号

2、版本号递增规则如下:(例如:原本的项目是 1.0.0 版本的话)
   主版本号:当你做了不兼容的 API 修改,此情况版本应该为 2.0.0
   次版本号:当你做了向下兼容的功能性新增,此情况版本应该为 1.1.0
   修订号:当你做了向下兼容的问题修正。此情况版本应该为 1.0.1

3、通过 npm version <update_type> 自动改变版本
   update_type 为 major、minor、patch 其中之一,分别表示大改,小改,补丁。
   例如: $ npm version minor v2.0.0

2、初始化项目 npm init

{
  "name": "npm-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

3、查看项目版本信息,默认1.0.0 npm version 

{
  'npm-test': '1.0.0',
  npm: '6.14.12',
  ares: '1.16.1',
  brotli: '1.0.9',
  cldr: '37.0',
  http_parser: '2.9.4',
  icu: '67.1',
  llhttp: '2.1.3',
  modules: '72',
  napi: '8',
  nghttp2: '1.41.0',
  node: '12.22.1',
  openssl: '1.1.1k',
  tz: '2019c',
  unicode: '13.0',
  uv: '1.40.0',
  v8: '7.8.279.23-node.46',
  zlib: '1.2.11'
}

4、执行命令,升级版本号

命令 作用 执行结果version
npm version prerelease 升级预发布号

首次执行

1.0.0 -> 1.0.0-0

再次执行

1.0.0 -> 1.0.0-1

npm version prepatch 升级修订号,保留预发布号 1.0.0-1 -> 1.0.1-0
npm version preminor 升级次版本号,保留预发布号 1.0.1-0 -> 1.1.0-0
npm version premajor 升级主版本号,保留预发布号 1.1.0-0 -> 2.0.0-0
npm version patch 升级修订号

首次执行

2.0.0-0 -> 2.0.0

再次执行

2.0.0 -> 2.0.1

npm version minor 升级次版本号 2.0.1 -> 2.1.0
npm version major 升级主版本号 2.1.0 -> 3.0.0

npm access 设置已发布包的访问级别

对于所有子命令,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>]

#显示包的所有访问权限。将只显示您至少具有读取权限的包的权限。如果<user>传入,列表过滤只球队是用户恰好属于。
npm access ls-collaborators [<package> [<user>]]

# 使用$EDITOR
npm access edit [<package>]

npm owner 管理包所有者

npm owner add <user> [<@scope>/]<pkg>
npm owner rm <user> [<@scope>/]<pkg>
npm owner ls [<@scope>/]<pkg>

简写: author

管理已发布包的所有权。

  • ls:列出所有有权修改包和推送新版本的用户。当您需要知道向谁寻求帮助时非常方便。
  • add:添加一个新用户作为包的维护者。此用户可以修改元数据、发布新版本和添加其他所有者。
  • rm:从包所有者列表中删除用户。这会立即撤销他们的特权。

欢迎 关注、点赞、评论!━(*`∀´*)ノ亻!

猜你喜欢

转载自blog.csdn.net/qq_41887214/article/details/120429268