Npm 包的搭建与发布

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Npm 包的搭建与发布

如果感兴趣,你可以把自己积累的函数库或者工具,放到 npm 上,然后安装到自己电脑终端,这样就可以很酷的使用了,我之前就把常用的一些项目脚手架模版 放到了公司的内网 npm 上,这篇文章就来介绍下如何发布和搭建一个npm 工具包。


发布 npm 包的流程


这里以私库为例

  1. 配置私库 registry: npm config set @vipabc:registry http://npm.registry.*****.com/
  2. npm login --registry=http://npm.registry.*****.com.cn/ --scope=@itutorgroup (之后按提示完成即可)或者:npm adduser --registry=http://npm.registry.*****.com.cn/ --always-auth
  3. 发布包:npm publish (需要在package.json里指定包名为:"name": "@*****/templateName")
  4. 取消发布包:npm unpublish [<@scope>/]<pkg>[@<version>] // 好像只能取消 24 小时内发布的包

使用方式:


这里以自己写的 crm-li 为例

  1. 如果是公司的内网 npm,首先要切换源
  2. npm i crm-cli -g
  3. 查看版本 crm --version / V
  4. 查看所有指令 crm -help / h
  5. 查看模版列表 crm list
  6. 基于 a 模板进行初始化 crm init a project-name

一个npm 脚手架模版的写法


效果图


1687777897581.png


核心 node 代码部分


讲解放到注释部分了


#!/usr/bin/env node
// 使用node开发命令行工具所执行的Javascript脚本必须在顶部加入 #!/usr/bin/env node 声明
const program = require('commander') // node 命令行处理工具🔧
const handlebars = require('handlebars') // 模板引擎处理字符串
const inquirer = require('inquirer') // 使用此模块可与命令行进行交互
const fs = require('fs') // Node.js内置的fs模块就是文件系统模块,负责读写文件
const ora = require('ora') // ora包用于显示加载中的效果,类似于前端页面的loading效果
const chalk = require('chalk') // 用于改变控制台中字符串到样式
const logSymbols = require('log-symbols')
const download = require('download-git-repo') // 下载 git 仓库代码 🔧
const templates = require('./config')
// 1.获取用户输入命令
program.version('1.0.1')
program
  .command('init <template> <project>')
  .description('初始化项目模板')
  .action(function (templateName, projectName) {
    /**
     * 根据模板名下载对应的模板到本地
     * 下载之前做 loading 提示
     */
    const spinner = ora('正在下载模板...')
    spinner.start()
    /**
     * 第一个参数: 仓库地址
     * 第二个参数: 下载路径
     */
    const { downloadUrl } = templates[templateName]
    download(downloadUrl, projectName, { clone: true }, (err) => {
      if (err) {
        spinner.fail('下载模板失败') // 下载失败提示
        console.log(logSymbols.error, chalk.red('初始化模板失败' + err))
        return false
      }
      spinner.succeed('下载模板成功') // 下载成功提示
      /**
       * 把项目下的 package.json 文件读取出来
       * 使用向导的方式采集用户输入的值
       * 使用模板引擎吧用户输入的数据解析到 package.json 文件中
       * 解析完毕,把解析之后的结果重新写入 package.json 文件中
       */
      inquirer
        .prompt([
          {
            type: 'input',
            name: 'name',
            message: '请输入项目名称:',
          },
          {
            type: 'input',
            name: 'description',
            message: '请输入项目简介:',
          },
          {
            type: 'input',
            name: 'author',
            message: '请输入作者名称:',
          },
        ])
        .then((answers) => {
          // 把采集到的用户输入的数据解析替换到 package.json 文件中
          const packagePath = `${projectName}/package.json`
          const packageContent = fs.readFileSync(packagePath, 'utf8')
          const packageResult = handlebars.compile(packageContent)(answers)
          fs.writeFileSync(packagePath, packageResult)
          console.log(logSymbols.success, chalk.yellow('初始化模板成功'))
        })
    })
  })
program
  .command('list')
  .description('查看所有可用模板')
  .action(() => {
    // 根据模板名下载对应的模板到本地并起名projectName
    console.log('模板列表:')
    for (let key in templates) {
      console.log(`${templates[key].name} ${templates[key].description}`)
    }
  })
program.parse(process.argv)


目录
相关文章
|
5月前
|
前端开发 小程序 API
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
|
5月前
|
资源调度 小程序 前端开发
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
|
5月前
|
JavaScript Linux 数据安全/隐私保护
node内网安装npm私服以及依赖包上传发布verdaccio
node内网安装npm私服以及依赖包上传发布verdaccio
369 1
|
5月前
|
资源调度 小程序 前端开发
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
|
10天前
|
数据安全/隐私保护
发布一个npm包
发布一个npm包
|
2月前
NPM——删除已发布的包
NPM——删除已发布的包
55 1
|
3月前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
|
2月前
|
JavaScript 前端开发 开发者
从零到一:教你如何发布自己的npm插件包
从零到一:教你如何发布自己的npm插件包
|
2月前
|
JavaScript
GitHub——自动发布NPM包
GitHub——自动发布NPM包
14 0
|
5月前
|
前端开发 JavaScript 数据安全/隐私保护
从0到1开发一个自己的npm包完整过程
创建自己的 npm 包涉及六个步骤:1) 注册 npm 账号;2) 使用 `npm init` 初始化项目,确保 package.json 的 name 唯一且 private 为 false;3) 开发项目,可封装 UI 组件、函数库或命令行工具;4) 本地调试,通过 `npm link` 在项目中测试;5) `npm login` 登录账号,可能需切换至官方仓库;6) 使用 `npm publish` 发布项目。注意版本号递增,无意义的包不建议发布。
183 2
从0到1开发一个自己的npm包完整过程

推荐镜像

更多
下一篇
无影云桌面