npm 发包一般包括工具类和组件类
这次讲解的是使用工具类,使用方式类似于
vue-cli
全局命令脚本(执行文件)如何写
脚本一般放在bin目录下,当然也可以使用其他名称
执行文件需要加上 Shebang 指明脚本文件的解释程序 (写到文件第一行)
告诉操作系统在执行这个文件时使用node解释器
#!/usr/bin/env node console.log('xxx')// 直接写你想要执行的脚本
怎么安装才能在终端的任何地方使用命令呢
- 在
package.json
中配置bin
字段(请看本文“操作流程”中对bin
的解释)
- 使用
npm i <package> -g
全局进行安装 - 如果全局安装了此包,那么xx命令就会添加到全局的
node_modules/.bin/
目录下,这个目录通常已经添加到全局的PATH环境变量中,所以可以在终端的任何地方直接使用xx命令
准备工作:
- 注册npm账号 https://www.npmjs.com/
操作流程:
- 使用npm init建立一个package.json文件
建立一个
package.json
文件,如果想要发布一个包,必须要有package.json
文件,且name
和version
是必须的- 建立你的文件目录
- bin // 将命令添加到全局的可执行文件目录 - [yourScriptName].js // 例如 xx.js - package.json - README.md. //描述文件
- package.json中配置打包信息
name
发布npm包的名称 (必填)
version
包的版本号,每次发包这个版本号都要改 (必填)
description
对包的描述
private
是否私有 (true和false)发包就false,true表示该包是私有的,不应该发布到任何公共的包管理器(例如 npm yarn)等
anthor
包的作者
license
包的协议
keywords
搜索关键字,在npm上进行模糊搜索可以搜索到这个包
main
因为我们在不同环境下
import
一个包的时候,需要确定加载的是npm哪个包的文件:就是main
字段中指定的文件。如果写的是脚本执行文件可以不要这个字段。bin
定义包中的可执行文件,如果你需要全局使用命令那么必填
如果全局安装了此包,那么xx命令就会添加到全局的
node_modules/.bin/
目录下,这个目录通常已经添加到全局的PATH环境变量中,所以可以在终端中直接使用xx命令// package.json { “bin”:{ "xx":"./bin/xx.js" } } 简写: { "bin":"./bin/xx.js" // 那么默认在终端执行的命令就是package.json设置的name字段 }
Tips: 执行文件需要加上 Shebang 指明脚本文件的解释程序:
#!/usr/bin/env node
dependencies
项目的依赖包及其版本范围或链接地址
使用
npm install <package>
时会安装其 dependencies
里面的包,当你开发一个包时要确保这些依赖是用户需要安装的。否则用户就会安装一些他并不需要的文件。devDependencies
存放与输出的包无关的依赖(例如测试、构建相关的包)
使用
npm install <package>
时会忽略 devDependencies
里面的包engines
用于指定你的包或应用程序所依赖的 Node.js 版本范围,以确保在正确的 Node.js 环境中运行
"engines": { "node": ">=10.0.0" } // 表示你的包或应用程序需要 Node.js 版本大于或等于 10.0.0 才能正常工作
- 发布哪些文件
- 存在
.npmignore
文件,以.npmignore
文件为准,在文件中的内容都会被忽略,不会上传;即使有.gitignore
文件,也不会生效。 - 不存在
.npmignore
文件,以.gitignore
文件为准,一般是无关内容,例如.vscode等环境配置相关的。 - 不存在
.npmignore
也不存在.gitignore
,所有文件都会上传。 package.json
中存在files字段,可以理解为files为白名单。
在npm包中可以,可以选择哪些文件发布到服务器中,例如只发布压缩后的文件等等
ignore相当于黑名单,files字段就是白名单,那么当两者内容冲突时,以谁为准呢?答案是
files
为准,它的优先级最高。作者:谢小飞链接:https://juejin.cn/post/7052307032971411463来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 发布包
npm login
登陆npmnpm publish
发布包
在终端中执行发包命令
- 发布完成之后,可以在npm上面查找自己发布的包
如何使用:
// package.json { name:"con" “bin”:{ "xx":"./bin/xx.js" } }
- 安装
npm i con -g
进行全局安装,只有全局安装才能在系统的任何地方使用bin
字段指定的命令- 使用命令
xx
在终端的任何位置进行运行,不必关心文件路径