最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 那些我们必须掌握的npm知识

    正文概述 掘金(爱笑的阿呆)   2021-04-28   554

    简介

    npmNode 的模块管理器,功能极其强大。主要分为三个部分:

    1. 网站
      开发者可以在该网站查找各种各样的包,以供使用。

    2. 注册表(registry)
      注册表是一个巨大的数据库,保存了每个包(package)的信息。
      例如我们要查询 react 包的信息,可以访问https://registry.npmjs.org/react,就会看到 react 模块所有版本的信息。
      模块名后面,还可以跟上版本号或者标签,用来查询某个具体版本的信息,例如:https://registry.npmjs.org/react/16.8.1 查看 react 16.8.1版本的信息
      具体用法就是,https://registry.npmjs.org/ 后面跟上模块名,就会得到一个JSON对象, 包含模块所有版本的信息。

    3. 命令行工具 (CLI)
      开发者可以使用该命令行工具和 npm 进行交互,包括包的安装,发布等。

    安装机制

    node 模块的首次安装过程可以简单分为四步:

    1. 执行 npm install <package> 命令
    2. npmregistry 注册表查询模块压缩包的网址
    3. 下载压缩包,存放在缓存目录,默认就是 ~/.npm
    4. 解压压缩包到当前项目的 node_modules 目录

    那么什么是压缩包的网址呢?
    我们通过注册表查询模块的信息时,返回的 JSON 对象里面,有一个 dist.tarball 属性,就是模块该版本压缩包的网址。

    安装包的几种方式

    • 包名安装
      npm i react : 默认安装 react模块 latest 标签上的最新版本

    • 包名加版本
      npm i react@16.8.1 : 安装 react模块16.8.1的版本

    • 包名加 tag
      npm i react@next : 安装 react模块 next 标签上的最新版本

    • tarball url
      npm i https://registry.npmjs.org/react/-/react-16.8.1.tgz : 安装 react模块16.8.1的版本

    • tarball file
      npm i file: xxxx.xxx.tgz tarball file 可以通过 npm pack 命令得到

    • git url
      npm i git+https://github.com/facebook/react.git

    • username/project
      npm i github:facebook/react

    版本号

    npm 采用了 semver 规范作为依赖版本管理方案,版本格式一般为:主版本号.次版本号.修订号。

    • 主版本号(major):一般改动很大,不兼容低版本。
    • 次版本号(minor):兼容同一个大版本的API和用法。
    • 修订号(patch):一般用来修复bug。
    • 有的时候在修订号后面可能还会有先行版本号,例如 1.0.0-alpha.11.0.0-beta.42.0.0-rc.1 等。常用的先行版本一般为 alphabetarcstablecsp 等。

    发布

    • 修改版本号
      npm version major : 主版本号加 1,其余版本号归 0。
      npm version minor : 次版本号加 1,修订号归 0。
      npm version patch : 修订号加 1。
      npm version 版本号 : 设置版本号为指定的版本号
      npm version prerelease : 先行版本号增加1
      npm version prerelease --preid=<prerelease-id> : 指定先行版本的名字
      // 假定现在的版本号是1.1.1
      npm version major  // 2.0.0
      npm version minor  // 1.2.0
      npm version patch  // 1.1.2
      npm version prerelease // 1.1.2-0
      npm version prerelease --preid=alpha // 1.1.2-alpha.0
      npm version 4.1.2  // 4.1.2
      
      执行 npm version 修改完版本号之后,还会默认执行 git add -> git commit -> git tag 操作,commit 的信息和为 tag 均为版本号。
    • 修改 commit 信息
      假如我们需要修改提交信息的话,只需在 npm version 命令后加上 -m 选项即可,%s 会被替换成为版本号。npm version prerelease -m "update %s"
    • 禁用版本提交和标记tag
      npm version prerelease --no-git-tag-version
    • 发布
      npm publish : 发布npm包

    tag

    npm 中的 tag 类似于 git 中的 branch ,发布者可以在指定的 tag 上进行发版,使用者可以选择指定 tag 来安装,默认的taglatest。这对于我们日常开发非常有用,很多时候我们想要发布版本来进行验证功能,但是又不想影响正在使用的人,我们就可以利用tag和先行版本来进行发包。

    npm publish --tag alpha  // 发版到名为alpha的tag上
    npm i <package>@<tag>    // 从指定tag上安装包
    

    link

    我们在日常的开发中经常会有这样的情况:有两个项目分别为A和B,A项目我们封装了一些基本的逻辑,供其他项目进行使用;B项目为我们的业务项目,依赖了A项目。然后现在来了一个新的需求,需要对AB两个项目进行改动,此时我们写完了A项目,想要在B项目中进行验证A项目的逻辑是否正确。
    当然我们可以通过A项目发版,然后B项目进行版本升级来进行验证,但是这导致的问题就是可能需要频繁发版;另外一种解决方案就是 link

    具体做法如下:

    1. 在A项目中执行 npm link 命令。
    2. 在B项目中执行 npm link A的包名 命令。

    执行完上述两步之后,此时B项目中 node_modules 里A的依赖就会指向我们的A项目。这样就可以不用发版进行验证,非常方便。当然 link 的本质原理其实就是软连接。

    npx

    npx 执行 Node 软件包的工具。原理很简单,就是运行的时候,会到 node_modules/.bin 路径和环境变量 $PATH 里面,检查命令是否存在;如果存在,则执行;不存在,则进行临时安装,然后执行,执行完毕将包删除。

    配置

    npm config 命令用来管理 npm 的配置

    • npm config set <key> <value> : 设置一些配置
    • npm config get <key> : 获取指定的配置
    • npm config delete <key> : 删除指定的配置
    • npm config list : 配置列表
    • npm config edit : 用编辑器打开配置文件

    例如我们经常会对 npmregistry 进行设置
    npm config set registry https://registry.npm.taobao.org/

    npm ci

    • 该命令只能一次安装整个项目,不能添加单独的依赖项
    • 项目必须有 package-lock.json 文件
    • 每次开始安装之前,都会清除 node_modules
    • 不会改写 package.jsonpackage-lock.json 文件
    • 安装速度更快,更严格

    很多时候,我们新克隆一个项目,进行 npm i 安装的时候,经常会出现改动 package.jsonpackage-lock.json 文件的情况,这有的时候会带来一些风险,而此时使用 npm ci 就是一个好的选择。

    查询包信息

    • npm view 包名 : 显示包的详细信息
    • npm view 包名 versions : 显示包的所有历史版本
    • npm repo 包名 : 打开包的源码仓库页面
    • npm docs 包名 : 打开包的文档地址

    其他

    • npm login : 登陆 npm
    • npm whoami : 显示 npm 用户名
    • npm bin : 显示 npm 的 bin 文件夹的路径
    • npm root : 显示 npm 根目录

    参考文章

    • npm 中文文档
    • npx 使用教程
    • npm 模块安装机制简介
    • 阿呆的博客

    起源地下载网 » 那些我们必须掌握的npm知识

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元