🧳

npm 发包

npm 发包一般包括工具类和组件类
这次讲解的是使用工具类,使用方式类似于 vue-cli
 
全局命令脚本(执行文件)如何写
脚本一般放在bin目录下,当然也可以使用其他名称
执行文件需要加上 Shebang 指明脚本文件的解释程序 (写到文件第一行)
告诉操作系统在执行这个文件时使用node解释器
#!/usr/bin/env node console.log('xxx')// 直接写你想要执行的脚本
 
怎么安装才能在终端的任何地方使用命令呢
  1. package.json中配置bin字段(请看本文“操作流程”中对bin的解释)
  1. 使用 npm i <package> -g 全局进行安装
      • 如果全局安装了此包,那么xx命令就会添加到全局的node_modules/.bin/ 目录下,这个目录通常已经添加到全局的PATH环境变量中,所以可以在终端的任何地方直接使用xx命令
 

准备工作:

  1. 注册npm账号 https://www.npmjs.com/

操作流程:

  1. 使用npm init建立一个package.json文件
    1. 建立一个package.json文件,如果想要发布一个包,必须要有package.json文件,且nameversion是必须的
  1. 建立你的文件目录
- bin // 将命令添加到全局的可执行文件目录 - [yourScriptName].js // 例如 xx.js - package.json - README.md. //描述文件
  1. 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 才能正常工作
  1. 发布哪些文件
    1. 在npm包中可以,可以选择哪些文件发布到服务器中,例如只发布压缩后的文件等等
      • 存在.npmignore文件,以.npmignore文件为准,在文件中的内容都会被忽略,不会上传;即使有.gitignore文件,也不会生效。
      • 不存在.npmignore文件,以.gitignore文件为准,一般是无关内容,例如.vscode等环境配置相关的。
      • 不存在.npmignore也不存在.gitignore,所有文件都会上传。
      • package.json中存在files字段,可以理解为files为白名单。
      ignore相当于黑名单,files字段就是白名单,那么当两者内容冲突时,以谁为准呢?答案是files为准,它的优先级最高。
      作者:谢小飞链接:https://juejin.cn/post/7052307032971411463来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1. 发布包
    1. 在终端中执行发包命令
      • npm login 登陆npm
      • npm publish 发布包
  1. 发布完成之后,可以在npm上面查找自己发布的包
 
 

如何使用:

// package.json { name:"con" “bin”:{ "xx":"./bin/xx.js" } }
  1. 安装
    1. npm i con -g 进行全局安装,只有全局安装才能在系统的任何地方使用bin字段指定的命令
  1. 使用命令
    1. xx 在终端的任何位置进行运行,不必关心文件路径