npm私有化仓库

2021-01-11  本文已影响0人  钰_0dd8

为什么要搭建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"
    }
  }
}
上一篇下一篇

猜你喜欢

热点阅读