美文网首页
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私有化仓库

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