- 一个cli可以有多个bin命令,例如
/usr/local/bin/mdf -> /usr/local/lib/node_modules/ucf-mdf/bin/ucf-init.js
/usr/local/bin/mdf -> /usr/local/lib/node_modules/ucf-mdf/bin/ucf-init.js
/usr/local/bin/mdf -> /usr/local/lib/node_modules/ucf-mdf/bin/ucf-init.js
- 多个cli可能会造成bin命令的指向改变(后安装的覆盖前面的),后者安装的起作用
发现被覆盖了,就重新执行以下npm install -g xxxx
npm config get registry
npm config set registry https://registry.npm.taobao.org
npm config get registry
npm config set registry https://registry.npm.taobao.org --global
npm config get registry
npm config set disturl https://npm.taobao.org/dist --global
npm config get registry```
npm info xxxx(包名)
npm --registry https://registry.npm.taobao.org install xxx
npm config set registry https://registry.npmjs.org
npm config get registry
-
- 在终端输入 npm login
出现
Logged in as gcht163 on https://registry.npmjs.org/.就可以
- 在终端输入 npm login
出现
-
- npm public
npm 发布必填 package.json中的:
- name
- version
- bin (cli填写)
npm log
npm publish
npm info xxxx(包名)
npm version patch
npm publish
npm info xxxx(包名)
npm view abcdemo version //查看现在包的版本
其他命令:
npm version patch //修改x.y.z中z的数字升级,补丁版本
npm version minor //修改x.y.z中y的数字提升,小修改版本
npm version major //修改x.y.z中x的数字提升,大版本
npm unpublish 包名@版本号
npm unpublish mypackage_g@1.0.3
npm unpublish xxx包名 --force
查看模块拥有者
$ npm owner ls
$ npm owner ls hello_freedom
添加一个发布者
$ npm owner add
$ npm owner add freedom hello_freedom
删除一个发布者
$ npm owner rm
$ npm owner rmfreedom hello_freedom
查看当前项目引入了哪些包
npm ls
mac 系统需要切换到root用户 sudo -u
- 查看版本 npm -v node -v
- 更新npm版本 npm install -g npm
- 更新node版本
先清除npm缓存:npm cache clean -force
然后安装n模块:npm install -g n
升级node.js到最新稳定版:n stable
先清除npm缓存:npm cache clean -force
先清除npm缓存:npm cache clean -force
- Node.js会从当前模块所在目录的node_modules(这里怎么不遵守Unix习惯,而使用了下划线呢?)开始找起,如果没找到再会去找上级目录的node_modules,直到根目录为止
- 手动安装npm install xxx 的xxx模块会和其他模块的间接依赖重复
- 好处 多版本共存
当然,Node.js这种“重复加载”的影响也并非完全是负面的,至少它天然的解决了多版本共存的问题。
例如, express v2.5.2依赖mime v1.2.4,
但我们程序自身又想使用mime v1.2.5。
此时,express内部自然使用mime v1.2.4,而我们自己的程序使用的便是mime v1.2.5。 - 缺点 重复安装
- 想避免这种重复加载,这就必须手动地删除模块内部被间接依赖的模块,将其移动到模块查询路径的```公用部分``上了。
- 就目前看来,这些操作必须
手动进行,因为npm在安装模块时不会关心依赖的模块是否已经安装过了(例如在NODE_PATH环境变量标识的路径里),它一定会重新下载所有依赖的模块。 - 如果您使用的是托管形式的Node.js服务,则很有可能无法做到这一点。