npm全局包及cli制作方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm全局包及cli制作方法相关的知识,希望对你有一定的参考价值。

参考技术A 首先说一下npm全局包,npm install xxx -g 即为全局安装,全局安装的npm包一般都带有cmd命令,比如安装vue-cli后执行“vue create XXX”即可生成一个新的vue项目模版,再比如安装http-serve后执行“http-serve”命令可以本地起一个静态服务
那么这些全局命令怎么实现的呢?其实很简单只需要在package.json文件里增加一个 "bin" 属性即可:

这样把包上传并全局安装后则会在本地注册一个全局命令,但是我们看到一般这种全局命令都会传若干个参数,例如最常见的:“npm i xxx -g”,"npm -version"这个是怎么做到的呢?这个时候“commander”该出场了,“npm install commander --save”即可本地安装保存,下面给一个简单的使用示例:

其中上面的action里的回调方法接受两个参数,第二个参数实际上是一个object,借鉴vue-cli里的一个处理方法:

有关于commander的用法就讲到这里,因为还有很多,如果直接看官方文档看不明白的可以选择直接阅读vue-cli的源码,里面相关的使用较多,可以参考借鉴

执行npm link即可,该命令会生成一条软链,指向全局包,即

输出第一行的意思是“vue-common”命令指向的具体文件位置(这个位置并非包在本机的开发路径),第二行是被link到全局的vue-fe-common包指向的实际位置

尝试全局安装 Vue CLI 时出现 NPM 代理问题

【中文标题】尝试全局安装 Vue CLI 时出现 NPM 代理问题【英文标题】:NPM proxy problem when trying to install Vue CLI globally 【发布时间】:2020-11-30 05:46:17 【问题描述】:

我尝试全局安装 Vue Cli,但没有安装,并且还显示了一些代理设置错误。我已经手动/cmd 在 .npmrc 文件上添加了一些值,如下所示,但它对我不起作用。

npm config set proxy http://proxy.mycompany.com:8080
npm config set https-proxy http://proxy.mycompany.com:8080

错误如下:

npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! network request to http://registry.npmjs.org/@vue%2fcli failed, reason: connect ETIMEDOUT 104.16.20.35:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Viking_Castle\AppData\Roaming\npm-cache\_logs\2020-08-10T15_30_01_181Z-debug.log

【问题讨论】:

【参考方案1】:

我有类似的错误

?  Initializing git repository...
⚙️  Installing CLI plugins. This might take a while...
npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://cdn.npm.taobao.org/%40babel/plugin-transform-unicode-escapes/-/%40babel/plugin-transform-unicode-escapes-7.12.1.tgz failed, reason: connect ETIMEDOUT 129.227.206.207:443 npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! A complete log of this run can be found in: npm ERR!     C:\Users\Pradeep S\AppData\Roaming\npm-cache\_logs\2020-11-27T19_57_22_034Z-debug.log  ERROR  command failed: npm install --loglevel error

R通过将 Wifi 连接更改为笔记本电脑解决了。使用移动热点连接,再次尝试从vue cli创建项目,这次成功了

【讨论】:

【参考方案2】:

尝试使用以下命令删除代理并尝试安装它

npm config rm proxy

npm config rm https-proxy

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。

以上是关于npm全局包及cli制作方法的主要内容,如果未能解决你的问题,请参考以下文章

vue-cli中安装配置方法

基于Vue-cli 快速搭建项目

笔记npm 安装 vue-cli

尝试全局安装 Vue CLI 时出现 NPM 代理问题

NPM软件包(使用CLI)安装全局返回命令未找到

npm 无法安装全局包?