美文网首页
npm私有化仓库

npm私有化仓库

作者: 钰_0dd8 | 来源:发表于2021-01-11 15:54 被阅读0次

为什么要搭建npm仓库

日常开发中, 经常会遇到各项目间会用到同样的功能模块、组件, 如果不抽成公共模块,那就只能CV大法,我们常规操作发布npm包,但是npm是公开的(当然Npm也提供私有化付费服务),相当于所有人都能看到你这个包里的内容并取之用之, 如果是跟业务强相关的显然不适合,这时候私有Npm服务登场。

私有npm的优势

1.安全性(布署在内网,资产安全性高)
2.复用性,开发效率,版本管理(立足之根本)
3.下载速度提升
4.技术资产积累

私有Npm有哪些

1.Npm 付费服务
2.Sinopia(不再维护)
3.Verdaccio(基于Sinopia)
4.cnpm: https://cnpmjs.org

Verdaccio

image.png
使用npm发布包

设置npm镜像地址

 npm config set registry http://115.29.207.86:4888/

使用nrm(推荐)

npm install -g nrm
nrm add ymyh http://115.29.207.86:4888/
nrm use ymyh

登录私有化npm账户,不存在就是直接注册账号
执行npm who am i 如果出现自己的账号 则表示npm 登录成功

npm login
Username:
Password:
Email:

在需要上传包的根目录执行 npm publish
访问http://http://115.29.207.86:4888查看自己发布的npm包

npm publish 过滤不想上传的文件

黑名单模式:.npmignore文件,没有.npmignore情况下使用.gitignore文件。
白名单模式:package.json里边配置files字段(只上传dist和src/components下的文件,package.json文件是必须上传的)

"files": [
    "dist",
    "src/components"
  ],

打包纯js npm包示例

image.png

package.json配置

{
  "name": "@sj/format",            //npm install 下载时的包名
  "version": "1.0.0",                //版本
  "description": "数据格式化",
  "main": "format.js",              //打包入口文件
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "hjj",
  "license": "ISC",
  "dependencies": {                  //依赖包
  }
}

打包vue组件示例

首先在导出文件index.js中import vue组件
通过install方法实现组件全局注册(也可不注册直接导出组件)

import CommonSelect from './cell-input.vue'

const components = {
    // 通过install来安装组件
    install(Vue) {
        Vue.component(
            CommonSelect.name, CommonSelect
        )
    }
}

if (typeof window !== 'undefined' && window.Vue) {
    window.Vue.use(components)
}

export default components
  ...
}

cd 到组件目录下,在package.json文件中配置要上传的包信息


image.png
{
  "name": "@sj/cell-input",
  "version": "1.0.0",
  "description": "输入框",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "common",
    "wgt"
  ],
  "author": "hjj",
  "license": "ISC",
  "dependencies": {
    "vant": "^2.12.4"
  }
}

执行npm publish 上传包

npm注意事项

1、包的package.json中包名必须以 @sj/....开头

//package.json
{
  "name": "@sj/select",
  "version": "1.0.1"
}

2、更新版本的时候版本号必须递增 version": "1.0.12
3、纯js npm包,如果包内有其他的npm包依赖,需要在dependencies中依赖声明,项目在install该包时才会同时下载依赖包

//package.json
{
  {
    "name": "@sj/scp-push",
    "version": "1.0.2",
    ...
    "dependencies": {
      "scp2": "^0.5.0"
    }
  }
}

相关文章

  • npm私有化仓库

    为什么要搭建npm仓库 日常开发中, 经常会遇到各项目间会用到同样的功能模块、组件, 如果不抽成公共模块,那就只能...

  • npm和nvm和nrm

    npmnode package manage私有化npm包,sinopia私有化安装,npm私有化包管理等组件化开...

  • 将npm仓库源地址映射cnpm仓库

    npm 将npm仓库源地址映射cnpm仓库 将npm仓库源地址映射cnpm仓库,原因就是国内速度快npm conf...

  • 前端架构之路(7) - 私有 npm 仓库

    私有 npm 仓库 1. “私有 npm 仓库” 有何用 组件化之后,搭建 “私有 npm 仓库” 是个不错选择。...

  • 搭建私有代码仓库服务器 Sinopia

    配置 私有仓库 在 CentOS 6 上配置私有 NPM 仓库 使用Sinopia搭建私有的npm仓库

  • npm 仓库

    1.登录 npm adduser --registry http://10.20.50.102:4873 2.发布...

  • npm yarn

    安装:npm install -g cnpm淘宝镜像:cnpm 和 npm 的命令一样,只不过仓库用的是npm仓库...

  • 突破Flutter私有化仓库100M限制-Hosted pack

    突破Flutter私有化仓库100M限制-Hosted packages must be smaller than...

  • 私有化部署npm

    前言 公司内部创建了一个自定义uniapp库,希望组件库能够提交到npm库中,但是又不希望发布到外部网络。 想法 ...

  • 如何创建私有npm仓库?

    原文地址:如何创建私有npm仓库? 目录 为什么要使用私有npm仓库呢? 如何搭建呢? 如何启动verdaccio...

网友评论

      本文标题:npm私有化仓库

      本文链接:https://www.haomeiwen.com/subject/fnnraktx.html