一看就会-自定义全局npm包

966 阅读2分钟

首先在终端输入npm config list 找到安装全局包的地址

npm config list 

复制成功以后在拷贝到搜索的时候要去掉一个\

因为\表示网络目录,\表示本地目录

比如我的全局包在这个目录

C:\Users\sandy\AppData\Roaming\npm

进入目录以后再进入node_modules文件夹我们就可以看到安装本地安装的全局包了

以前我们是不是输入什么npm,nrm,yarn指令都会反馈结果给我们

那么我们怎么自定义指令喃?

在自定义本地包中的package.json里面进行配置

添加bin属性,下面我们就来进行简单的配置

{
  "name": "gt999",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "bin": {
    "gt": "index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

这个bin属性什么意思喃?

表示我们自定义了一个叫做gt的指令,当输入这个指令的时候,会去查找index.js文件然后执行里面的代码

现在我们来试一下gt这个指令

是不是很明显就报错了,为什么报错?因为我们是不是还没有导入这个全局包

如何导入?

在自定义的本地包的终端输入npm link

npm link

导入以后来试一下看能不能运行

是不是还是不行,为什么不行?

因为系统不知道在什么环境下执行这个文件

这个文件是不是要在node环境下执行

我们是不是就需要让它在node环境下执行

如何让这个文件在node环境下执行

只需要在需要执行的文件最前面加上#! /usr/bin/env node

#! /usr/bin/env node

加上以后我们再重新导入全局包(npm link)

然后再重新的来试一下能不能执行我们自定义的指令

现在是不是就没有问题了

我们再来试一下把本地包上传然后全局安装包来测试行不行

这个很简单啊,上节已经说过了,不会的可以看看上节的文章

juejin.cn/post/690529…

直接上传一下就可以了

然后全局安装这个包

npm i gt999 -g

最后来测试一下能不能成功

诶,是不是就没有问题了