设为首页 加入收藏

TOP

nodejs进阶(1)——npm使用技巧和最佳实践(一)
2019-09-17 17:50:57 】 浏览:26
Tags:nodejs 进阶 npm 使用技巧 最佳 实践

nodejs进阶教程,小白绕道!!!

npm使用技巧和最佳实践

前提:请确保安装了node.js

npm的最佳实践

npm install是最常见的npm cli命令,但是它还有更多能力!接下来你会了解npm是如何在应用的整个生命周期帮助你的-从创建一个项目到开发和部署整个生命周期

认识npm

在开始之前,我们先来看看一些查看正在运行的npm版本的命令

npm version

获取当前npm cli正在使用的版本,你可以执行命令 npm version,这条命令除了返回版本外,还可以返回很多信息-当前包的版本,你正在使用的node.js的版本,openSSL或者V8的版本,以我本地安装的node为例,结果如下:

npm help

和大多数的命令行工具一样,npm也有一个内置的帮助函数, 可以获取命令的描述和提要,比入我们想看看npm test命令是做什么的,执行 npm help test

1 使用 npm init创建新项目

使用 npm init命令可以帮助你交互式地创建 package.json文件,会弹出项目名称和描述的问题,有一个快速的解决方法 npm init--yes(或者简写 npm init-y),那么就不会弹出任何问题了,仅仅是使用默认配置创建一个 package.json, 使用下面的命令,你可以配置这些默认配置

  1. npm config set init.author.name YOUR_NAME
  2. npm config set init.author.email YOUE_EMAIL

2 查找正确的npm包

查找正确的npm包相当具有挑战性-有成千上万的包可供选择,因此选择正确的npm 包很令人苦恼了,然而,我们可以选择一个模块帮助我们发送HTTP请求 有一个网站可以帮助我们简单地完成这个任务,它就是npms.io,它会展示包的质量,受欢迎度,和维护性,这些是通过一个模块是否更新了依赖,是否有提示配置,是否做了测试覆盖,最近有没有提交记录来综合计算得出的

3 检查npm包

一旦我们找到了我们的模块(在我们的例子中是一个request模块),我们应该看一下文档,查看issues,以便更好地了解我们即将引入到应用中的包,不要忘记你使用的npm包越多,你的项目的风险就越高

如果你想在cli中打开这个模块的首页,执行

npm home request

打开模块的issues

npm bugs request

或者你只是想查看模块的git仓库,执行下面的命令

npm repo request

4 保存依赖

npm采用semver进行控制

所谓SEMVER,指的是语义化版本,其规则概述如下: 版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:新的架构调整,不兼容老版本
  • 次版本号:新增功能,兼容老版本
  • 修订号:修复bug,兼容老版本。

一旦你决定将第三方包引入你的项目,你必须安装和保存它,最常见的命令是 npm install some-package,如果你想自动将包信息添加进 package.json文件,你需要执行 npm install some-package--save

npm默认会带着'^’这个前缀保存你的包,具体的安装规则如下:

^version

  1. 兼容某个版本
  2. 版本号中最左边的非0数字的右侧可以任意
  3. 如果缺少某个版本号,则这个版本号的位置可以任意
  4. 如:^1.1.2 ,表示>=1.1.2<2.0.0
  5. 可以是1.1.21.1.3,.....,1.1.n1.2.n,.....,1.n.n
  6. 如:^0.2.3 ,表示>=0.2.3 <0.3.0
  7. 可以是0.2.30.2.4,.....,0.2.n
  8. 如:^0.0,表示 >=0.0.0 <0.1.0
  9. 可以是0.0.00.0.1,.....,0.0.n

这也意味着当你下次执行 npm install的时候,即使主版本没有更改,次版本或者修订版本发生了改变,你的这个模块会重装,你可以执行下面的命令修改安装包版本规则 npm configsetsave-prefix='~'

这个包前缀的安装规则如下:

~version

  1. 大概匹配某个版本
  2. 如果minor版本号指定了,那么minor版本号不变,而patch版本号任意
  3. 如果minorpatch版本号未指定,那么minorpatch版本号任意
  4. 如:~1.1.2,表示>=1.1.2 <1.2.0,可以是1.1.21.1.3,.....,1.1.n
  5. 如:~1.1,表示>=1.1.0 <1.2.0
  6. 如:~1,表示>=1.0.0<2.0.0
  7. 可以是1.0.01.0.1,.....,1.1.n1.2.n,.....,1.n.n

如果你想保存指定的版本号,执行 npm configsetsave-exacttrue

5 锁定依赖

上面已经介绍过了,npm采用语义化的版本号 semver 进行控制,让开发过程中依赖的获取和升级变得非常容易,但不严格的版本号控制,也带来了不确定性

  • npm建议使用semver版本,但是部分包不遵循semver;
  • package.json 可以使用精确的版本号控制你的直接依赖包,但第三方依赖的包无法管理;
  • 在开发阶段执行得到的包的版本,和后续部署时得到的可能是不一致的,更不可控的是,你依赖的第三方包也有这样的情况会导致潜在的上线风险。

可以用 npm shrinkwrap解决这个问题,这条命令会生成一个npm-shrinkwrap.json,这个文件里面不仅包含了安装在你机器上的指定版本的包,而且还有包的指定版的依赖包,一旦在项目的根目录下有这个文件,你执行 npm install命令会重新生成一个相同的依赖树

6 检查项目的依赖包有无更新

npm有一个内置的工具方法命令 npm outdated可以检查过时的包,在你项目下运行`npm outdated'即可,但是手动执行检查更新命令就很烦了,有一个可以自动执行包更新检查的工具Greenkeeper,有兴趣的童鞋可以戳进链接了解。

7 开发包

在本地开发npm包的时候,我们可以使用 npm link命令,将npm模块链接到对应的运行项目中去,方便地对模块进行调试和测试

举个例子来说明是什么意思以及怎么使用吧

我们现在有两个项目,分别是npm-link-module和npm-link-test,其中npm-link-module是我们要开发的npm包,npm-link-test用来测试我们开发的包

在npm-link-module下执行 npm init-y生成一个默认的包配置文件package.json,在目录下新建index.js如下,写个简单的日期转换函数

  1. function formateTime(date) {
  2. let year = date.getFullYear();
  3. let month = date.getMonth() + 1;
  4. let day = date.getDay();
  5. month = month < 10 ? '0' + month : month;
  6. day = day < 10 ? '0' + day : day;
  7. return year + '-' + month + '-' + day;
  8. }
  9. module.exports = formateTime
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HTML中的图片标签的用法! 下一篇JavaScript循环及输出方式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目