背景

  1. Node.js开发本地项目,有时不同项目之间存在依赖,如果不想把项目发布到npm社区的仓库,则需要有自己本地的仓库。
  2. 有些公司采用的是内网开发,很多npm资源无法从内网去下载。

sinopia(主流)

使用文件系统作为存储,仅保存用户需要的包,如果本地仓库没有对应的包,则从指定的registry下载,默认为npmjs.org,可以改成淘宝的镜像。

安装

Sinopia的安装比较简单,只需使用npm一条安装命令即可:

npm install -g sinopia 或者 yarn global add sinopia

安装遇到问题

1.python

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

node-gyp依赖python 2.7。安装python2.7,并把它添加到环境变量PATH,npm config set python python2.7

2.不支持fs-ext和crypt3



只要有出现以上图的或者 其他关于crypt3的问题的话, 看下面解决方法

查看sinopia源码(看你安装在哪)里的package.yaml

optionalDependencies:
# those are native modules that could fail to compile
# and unavailable on windows
fs-ext: '>=0.4.1 <1.0.0-0'
crypt3: '>=0.1.6 <1.0.0-0' # for sinopia-htpasswd

删除sinopia安装目录node_modules里的fs-ext和crypt3相关的包,否则执行npm添加用户和登陆验证时会报错。包括:.0.2.0@crypt3,.0.6.0@fs-ext,crypt3和fs-ext以及sinopia-htpasswd\node_modules下的crypt3和fs-ext

使用

启动: sinopia



你也可以打开 地址看一下http://localhost:4873/



就说明成功了

换npm 源

npm config set registry http://xxx.xx.xx.xx:4873/
//xxx.xx.xx.xx 为自己的ip

建议使用用 nrm

npm install -g nrm # 安装nrm
nrm add name http://XXXXXX:4873 # 添加本地的npm镜像地址
nrm use name # 使用本址的镜像地址 name为你要增加的地址

新建用户

npm adduser
Username: test
Password: test
Email: (this IS public) xxx@xxxx

然后就可以发布包了

npm publish     // 在自己要发布的包 路径打这个命令

这边发布的包可以 是自己写的一些资源 或者是其他的 但是要根据npm 包的规范

本人配置文件

#
# This is the default config file. It allows all users to do anything,
# so don't use it on production systems.
#
# Look here for more config file examples:
# https://github.com/rlidwka/sinopia/tree/master/conf
# # path to a directory with all packages
storage: ./storage # npm包存放的路径 auth:
htpasswd:
file: ./htpasswd
# Maximum amount of users allowed to register, defaults to "+inf".
# You can set this to -1 to disable registration.
# max_users: 1000
max_users: 1000 # 默认为1000,改为-1,禁止注册 # a list of other known repositories we can talk to
uplinks:
npmjs:
url: http://registry.npm.taobao.org/ # 默认为npm的官网,由于国情,修改 url 让sinopia使用 淘宝的npm镜像地址 packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated '*':
# allow all users (including non-authenticated users) to read and
# publish all packages
#
# you can specify usernames/groupnames (depending on your auth plugin)
# and three keywords: "$all", "$anonymous", "$authenticated"
access: $all # allow all known users to publish packages
# (anyone can register by default, remember?)
publish: $authenticated # if package is not available locally, proxy requests to 'npmjs' registry
# proxy: npmjs #这个去掉的话,sinopia 将不去下载依赖包 如果只是要放自己资源仓库的话就去掉
# # log settings
logs:
- {type: stdout, format: pretty, level: http}
#- {type: file, path: sinopia.log, level: info} # you can specify listen address (or simply a port)
listen: 0.0.0.0:4873 # 默认没有,只能在本机访问,添加后可以通过外网访问。

注意:配置文件 是在你的用户名 如:本人就admin 找到目录就可以了 (win)

storage: 仓库保存的路径

htpasswd: 保存密码信息 只有新建用户后才 有这个文件

config.yaml: 这个是本地的 配置文件 信息(改这个)

npm私有仓库搭建的更多相关文章

  1. 基于verdaccio的npm私有仓库搭建

    详见个人博客:https://shengchangwei.github.io/verdaccio/ 一.使用npm安装 npm install --global verdaccio 二.cmd 启动 ...

  2. 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  3. NPM私有服务器架设 FOR CentOS

    确保计算机能够连接互连网. 一.安装 Couchdb1.6 1.(CentOS 6.7)如果版本低于6.7请使用下面命令更新系统库. yum update 2.使用下面命令安装依赖库 yum inst ...

  4. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

    使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...

  5. docker私有仓库搭建(ubuntu 14.04和centos7)

    最近是在做一个关于docker云化的项目,马上就要开始实战.下午先做了一个私有仓库搭建的实验,先大概做个笔记,有兴趣的蛮看一下吧. 先在所有机子上都安装上docker,我的是两台ubuntu,分别是1 ...

  6. Nexus 私有仓库搭建与 Maven 集成

    Nexus 私有仓库搭建与 Maven 集成 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和 ...

  7. npm私有仓库 配置verdaccio在docker环境

    前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...

  8. CentOS7 Docker私有仓库搭建及删除镜像 【转】

    文章来源:centos7 Docker私有仓库搭建及删除镜像 如果不想用私有镜像库,你可以用docker的库 https://hub.docker.com 环境准备 环境:两个装有Docker 17. ...

  9. 使用npm私有服务器保存公司内部强业务类型组件(二):vue-webpack框架

    一套基于vue webpack element-ui的npm私有服务器开发组件框架 下载 在配置的有两个地方需要注意: 1:配置library library选项: 如果设置此选项,会将bundle导 ...

随机推荐

  1. Attr.checkId()方法

    1.符号sym是TYP02 举个例子,如下: package bazola; class Point { // ... } class Tree<A> { class AttrVisito ...

  2. redis 迁移工具 redis-port 从阿里云迁移到aws

    对于 redis 的 迁移我在网上看到了很多方法,有使用redis-dump 的,有使用 aof导入方式,有rdb文件迁移方式,和redis-port. 由于我是将  redis  从阿里云迁移到AW ...

  3. C#的进度条透明的情况(穿透问题)

    如图: 很明显,可以看到透过进度条的框框可以看到下面的软件界面, 之前出现这种情况是因为pictureBox和panel层级之间的关系造成的, 没想到这次的原因居然不是这样,而是因为少了backCol ...

  4. mybatis逆向工程总结工具类

    逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到 ...

  5. 基于VUE的SPA单页应用开发-加载性能篇

    1.基于异步数据的vue页面刷新 先看看基于异步数据的vue页面刷新后,都发生了啥- 如图所示: 图1 基于异步数据的vue页面刷新 网络请求图 步骤如下: step1:请求页面: step2:请求页 ...

  6. 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门

    Vue.js——60分钟快速入门   Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理 ...

  7. angular 下载文件

    后台直接返回文件即可,以wcf为例:读取目录文件返回,或直接生成文件并返回. public Stream GetCodeSn() { return File.OpenRead("e:\\工作 ...

  8. vue权限路由实现方式总结

    使用全局路由守卫 实现 前端定义好路由,并且在路由上标记相应的权限信息 const routerMap = [ { path: '/permission', component: Layout, re ...

  9. 消息队列系列(二):.Rabbitmq的使用及Web监控工具使用

    一.文档资料        1.官方网站:http://www.rabbitmq.com/        2.安装教程:http://www.rabbitmq.com/install-windows. ...

  10. why go

    取自:http://www.weixinyidu.com/n_3502636 Go的核心贡献者 Go主要有静态语言.天生并发.内置GC.安全性高.语法简单.交叉编译和编译快速这几个方面的特性.这些特性 ...