关于前端:Nexus3上传npm依赖

10次阅读

共计 1476 个字符,预计需要花费 4 分钟才能阅读完成。

npm 是一个十分好用的包管理工具,使用在十分多的我的项目里。当咱们须要依赖包时,npm 会从镜像中下载到本地(默认是 https://registry.npmjs.org/,国内应该有不少同学会将这个镜像改成淘宝的)。

然而当咱们在内网环境开发时,没有内部网络,这就会造成无依赖可用,此时咱们就须要搭建一个内网的镜像,将须要的依赖放在这个镜像上。

这里咱们应用 Nexus3 来创立私库。

筹备一 创立 Nexus3 的仓库

  1. 首先创立一个仓库
  2. 接下来抉择 npm(hosted),咱们没有外网,所以不创立代理和分组
  3. 而后填写一个名字就能够,其余的临时能够不思考,如果有同学创立了本人的 Blob,则选为本人创立的 Blob 即可

筹备二 下载 tgz 包

  1. 首先,装置 node-tgz-downloader,用来下载依赖 tgz 文件

    npm install node-tgz-downloader -g
  2. 关上咱们的 node 工程,将须要的依赖都装置到本地(如果曾经装置,或曾经生成 package-lock.json 文件,则跳到下一步),执行命令

    npm install

    这里特地留神,尽可能应用 https://registry.npmjs.org/ 这个镜像,淘宝尽管快,然而出问题了真是不晓得怎么解决。查看以后应用的镜像命令

    npm config get registry

    不晓得怎么批改镜像地址的同学能够应用上面这个命令

    npm install --registry=https://registry.npmjs.org/

    或者在工程根目录下新建一个 .npmrc 文件,手动定义镜像地址

  3. 生成 package-lock.json 文件后,执行命令

    download-tgz package-lock package-lock.json

    这个命令会依据 package-lock.json 文件,下载所须要的依赖包 tgz,如果存在下载失败的状况,则多执行几次命令,直到所有依赖都下载实现。

  4. 下载的 tgz 文件会在我的项目根目录 /tarballs 下,这个时候基本上就实现了 tgz 的下载。

筹备三 公布 tgz 到 nexus

  1. 为了跟上面的脚本放弃始终,将所有 tgz 都放到一个目录下,新建 tgz 文件夹,并在 tarballs 文件夹下执行上面的 shell 命令,这里用 shell 脚本找出 tarballs 文件夹下所有 tgz 包并复制到 tgz 文件夹下(这里都放到一个目录下是因为当有多个工程时,依赖包可能会反复,公布时 tgz 有反复则会报错,所以是一个去重的操作)。

    find . -name '*.tgz' -exec cp -f {} ../tgz \;
  2. 创立公布脚本(单个工程时可利用 find 命令改变上面的脚本,省去第一步)

    #!/bin/bash
    
    PACKAGE_PATH=./tgz
    REPOSITORY=http://ip:port/repository/dataservice-web/
    
    npm login --registry=$REPOSITORY
    
    for file in $PACKAGE_PATH/*.tgz; do
     npm publish --registry=$REPOSITORY
    done
  3. 执行公布脚本,会要求填写 username,password 以及 email,填写完就会开始公布;这个时候就十分慢了,急躁期待(我这里 6 百个 tgz,用时大略十分钟)

完结

因为没找到应用 Nexus3 的 API 上传依赖的例子,所以应用了 npm 的发布命令,导致上传比较慢,并且对反复的依赖不能做主动解决。如果有晓得的同学能够留言讲一下。

如果上传完之后,还存在个别包不存在的状况,那就能够通过手动上传的形式,利用 Nexus3 的界面上传即可。

正文完
 0