当前位置: 首页 > 后端技术 > Node.js

什么是npm系列:二、install的十八个技巧

时间:2023-04-03 23:56:00 Node.js

我们平时使用npminstall只是为了在npm上安装包。事实上,它比我们想象的更强大。它不仅可以在npmjs上安装包,还可以直接从git和gitlab安装,我们先来看下install命令的参数列表://Installnpminstallfromnpmsourcenpminstall[<@scope>/]npminstall[<@scope>/]@npminstall[<@scope>/]@npminstall[<@scope>/]@//从git源、tar包、本地目录安装npminstall:/npminstallnpminstallnpminstall<文件夹>1。npminstall默认情况下,会在执行命令Allmoduleslistedinpackage.json后安装。如果添加了--production标志,或者将环境变量NODE_ENV设置为production,npm将不会安装devDependencies中的模块。1.1npminstall将包目录以符号链接的形式连接到项目中。1.2npminstall从tar打包有两种方式:file:本地tar文件npminstall./package.tgzurl:远程tar地址npminstallhttps://github.com/indexzero/forever/tarball/v0.5.61.3npminstall另一种常见的方式是从git地址安装npm包,但是使用的时候需要注意仓库是否过大,源地址是否在国外国家,这将影响安装速度。协议地址格式如下:://[[:]@][:][:][/][#|#semver:]可以是git、git+ssh、git+http、git+https或git+file。如果配置了#或#semver:,npm将安装匹配的特定提交,否则将使用master分支。使用git安装模块时,会涉及到访问权限的问题。我们可以使用如下环境变量:GIT_ASKPASSGIT_EXEC_PATHGIT_PROXY_COMMANDGIT_SSHGIT_SSH_COMMANDGIT_SSL_CAINFOGIT_SSL_NO_VERIFY环境变量的具体介绍可以看这里:Git内部原理-环境变量另一种笨办法是使用ssh安装,本地电脑配置sshkey,权限即可配置后直接验证。相关示例如下:npminstall'git+ssh://git@github.com:ineo6/mini-deploy.git#v1.0.2'npminstall'git+ssh://git@github.com:ineo6/mini-deploy#semver:^1.0'npminstall'git+https://isaacs@github.com/ineo6/mini-deploy'npminstall'git://github.com/ineo6/mini-deploy#v1.0.2'GIT_SSH_COMMAND='ssh-i~/.ssh/custom_ident'npminstall'git+ssh://git@github.com:ineo6/mini-deploy.git'1.4npminstall/[#]如果我们的代码托管在github上,我们可以使用更短的命令安装它:npminstall/[#]npminstallgithub:/[#]示例如下:npminstallineo6/magic-lint#|#semver:]安装https://gist.github.com/gistID的内容作为一个包。需要注意的是,gist的内容需要梯子才能进入。这是一个示例:npminstallgist/1b91123bccc1bb3509bccdbe15215c831.6installfrombitbucket安装托管在https://bitbucket.org/bitbucketname/bitbucketrepo的包。命令如下:npminstallbitbucket:/[#]示例如下:npminstallbitbucket:mybitbucketuser/myproject1.7InstallfromgitlabHostedathttps://gitlab.com/gitlabname/gitlabrepo上的包。命令如下:npminstallgitlab:/[#]示例如下:npminstallgitlab:mygitlabuser/myprojectnpminstallgitlab:myusr/myproj#semver:^5.02。npminstall中使用了额外的参数我们可以混合使用各种参数:--tag对应dist-tag(实际执行时发现无效)--dry-run相当于模拟运行,只输出日志并且不执行实际安装。--package-lock-only只更新package-lock.json,不安装依赖。-f或--force强制安装远程资源-g或--global全局安装--global-style安装本地依赖时,目录形式会和全局安装结果一样--ignore-scripts忽略包.jsonscripts脚本--legacy-bundlingnpm的安装方式将恢复为嵌套安装--link以软链接的形式在本地安装全局包(后面会展开介绍)--no-bin-链接避免在二进制可执行文件的包符号链接中创建包--no-optional防止安装可选依赖项--no-shrinkwrap忽略shrinkwrap--no-package-lock忽略package-lock.json--nodedir=/path/to/node/source指定节点目录--only={prod[uction]|dev[elopment]}相当于NODE_ENV,只安装非devDependencies依赖或者devDependencies依赖--no-audit禁用诊断报告当使用以上参数时,我们还可以加上两个参数:-E,--save-exact:语义上不会记录版本号,会显示具体的“1.2.3”-B,--save-bundle:依赖也会被记录在bundleDependencies4.预览下一篇文章发布自己的npm包命名,重点介绍发布过程和需要注意的点。同时,还有很多干货等你来发掘。系列总结什么是npm系列:一、npm简介什么是npm系列:二、install十八招待续