nodejs进阶教程,小白绕路!!!npm提示和最佳实践先决条件:确保安装了node.jsnpm的最佳实践npminstall是最常见的npmcli命令,但它还有更多!接下来,您将了解npm如何在应用程序的整个生命周期中为您提供帮助——从创建项目到开发和部署整个生命周期。认识npm在开始之前,我们先来看一些命令,查看正在运行的npm版本npmversion获取npmcli的当前版本,可以执行命令npmversion,这个命令除了返回version-当前包的版本,你使用的node.js的版本,openSSL的版本或者V8版本,以我本地安装的node为例,结果如下:npmhelp和大多数命令行工具一样,npm还内置了帮助功能,可以获取命令的描述和总结。我们想看看npmtest命令有什么作用,执行`npmhelptest`1使用npminit新建项目使用npminit命令帮你交互式创建一个package.json文件,会弹出一个问题with项目名称和描述,有一个quickfixnpminit--yes(或者简称npminit-y),然后就不会弹出任何问题了,只需要创建一个默认配置的package.json,你可以配置这些默认的使用以下命令进行配置npmconfigsetinit.author.nameYOUR_NAMEnpmconfigsetinit.author.emailYOUE_EMAIL2对npm包可能会很沮丧,但是,我们可以选择一个模块来帮助我们发送HTTP请求包,这些是否是通过某个模块更新的依赖,是否有提示配置,是否做过测试覆盖,是否有最近的commit记录来合成计算出来的3.检查npm包。一旦我们找到了我们的模块(在我们的例子中是一个请求模块),我们应该查看文档并检查问题以更好地了解我们将要引入应用程序的包,并且不要忘记,您使用的npm包越多,您的项目就越多风。风险越高,如果你想在cli中打开这个模块的主页,执行`npmhomerequest`打开模块的issuesnpmbugsrequest或者你只是想查看模块的git仓库,执行下面命令npmreporequest4savedependenciesnpm使用semver所谓SEMVER指的是语义版本,其规则概括如下:版本格式:主版本号。次版本号。revisionnumber,版本号递增规则如下:majorversionnumber:新的架构调整,不兼容旧版本minorversionnumber:新增功能,兼容旧版本Revisionnumber:Bugfixed,兼容旧版本一旦你决定在你的项目中引入第三方包,你必须安装并保存它。最常用的命令是npminstallsome-package。如果你想自动将包信息添加到package.json文件中,你需要执行npminstallsome-package--savenpm将默认以前缀'^'保存你的包。具体安装规则如下:^version兼容一个版本号中最左边的非零数字,右边可以任意。如果某个版本缺号,这个版本号的位置可以任意,比如:^1.1.2,表示>=1.1.2<2.0.0,可以是1.1.2,1.1.3,...,1.1.n,1.2.n,.....,1.n.??n如:^0.2.3,表示>=0.2.3<0.3.0,可以是0.2.3,0.2.4,...,0.2.n如:^0.0,表示>=0.0.0<0.1.0,可以是0.0.0,0.0.1,...,0.0.n这也意味着下次执行npminstall时,即使主版本有没有变化,小版本或修订版发生了变化,你的模块将被重新安装,你可以执行以下命令修改安装包版本规则npmconfigsetsave-prefix='~'这个包前缀的安装规则如下:~version可能与某个版本匹配。如果指定了次版本号,则次版本号不变,但补丁版本号是任意的。如果未指定次版本号和补丁版本号,则次版本号和补丁版本号是任意的。例如:~1.1.2,表示>=1.1.2<1.2.0,可以是1.1.2,1.1.3,...,1.1.n如:~1.1,表示>=1.1.0<1.2.0如:~1,表示>=1.0.0<2.0.0,可以是1.0.0,1.0.1,.......,1.1.n,1.2.n,...,1。n.n如果要保存指定的版本号,执行npmconfigsetsave-exacttrue5锁定依赖上面提到npm使用语义化的版本号semver来控制,使得在开发过程中获取和升级依赖非常方便,但版本号控制不严格。也带来了不确定性。npm推荐使用semver版本,但有些包不遵循semver;package.json可以使用精确的版本号来控制你的直接可以接收依赖包,但无法管理第三方依赖包;开发阶段获取的包版本可能与后续部署获取的版本不一致,更不可控的是你依赖的第三方包也存在这种情况,会导致潜在的线上风险。你可以使用npmshrinkwrap来解决这个问题。此命令将生成一个npm-shrinkwrap.json。该文件不仅包含您机器上安装的指定版本的包,还包含指定版本的包。一旦你在项目的根目录下有这个文件,你执行npminstall命令重新生成相同的依赖树6.检查项目的依赖包是否更新npm有一个内置的工具方法命令npmoutdated来检查过时的包,你可以在你的项目下运行`npmoutdated',但是手动执行checkupdate命令很烦人。有一个工具Greenkeeper可以自动执行包更新检查。感兴趣的童鞋可以点击链接了解更多。7开发包在本地开发npm包时,我们可以使用npmlink命令将npm模块链接到对应的运行项目中,方便调试和测试模块。让我们举个例子来解释它的含义和使用方法。我们现在有两个项目,分别是npm-link-module和npm-link-test,其中npm-link-module是我们要开发的npm包,npm-link-test是用来测试我们在npm开发的包-在link-module下执行npminit-y生成一个默认包配置文件package.json,在如下目录新建index.js,写一个简单的日期转换函数functionformateTime(date){letyear=date.getFullYear();让月=date.getMonth()+1;让day=date.getDay();月=月<10?'0'+month:月份;天=天<10?'0'+日:日;returnyear+'-'+month+'-'+day;}module.exports=formateTime然后执行npmlink,执行命令后npm-link-module会根据package上的配置链接到全局。json,路径为{prefix}/lib/node_modules/
