前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搭建 Private NPM

搭建 Private NPM

作者头像
icepy
发布2019-06-24 17:54:57
6260
发布2019-06-24 17:54:57
举报
文章被收录于专栏:子曰五溪子曰五溪

在Mac上完成了搭建流程,Windows可能稍有不同。

目前来说NPM生态事实上完成了前端模块化系统的必要准备,因此如果你厂的业务会有Private的需求,这个Point会有两个方案给你选择:

  • 基于cnpmjs.org搭建
  • 直接购买npm company服务,一个人/一个月/7美金

其实在Github上还有另外一个方案:【sinopia】,只是这个库已经不在维护,也就放弃了选择这个方案。

吐槽一下cnpmjs.org的Getting Start,《Deploy a private npm registry in 5 minutes》使用的是sqlite3,而exampless使用的是mysql,印证一些思考时,走了些弯路。(建议:统一起来会比较好)

创建一个项目:

代码语言:javascript
复制
$ mkdir web-private-npm && cd web-private-npm
$ npm init -y
$ npm i cnpmjs.org --save

安装mysql:

代码语言:javascript
复制
$ brew install mysql
$ mysql.server start
$ mysql -uroot
$ mysql > show databases;

本地mysql可以不设置root密码,免得忘记。

创建config.js和index.js:

代码语言:javascript
复制
$ touch config.js
$ touch index.js

docs 目录中有db.sql文件,用于创建表字段,最好copy到你的项目中,因为cnpmjs.org包中的db.sql是个空文件。

创建数据库和表字段:

代码语言:javascript
复制
$ mysql -uroot -e 'CREATE DATABASE private_npm'$ mysql -uroot 'private_npm' < ./db.sql
$ mysql -uroot -e 'shhow tables;'

通过cnpmjs.org的源码找到了两个start类的函数:

  • startWork
  • startSync

以及cnpmjs.org自己的配置文件。

大部分的时候我们基本就是在学习怎么配置它:

代码语言:javascript
复制
module.exports = {
 admin: {    'icepy': 'xiangwenwe@gmail.com'
 },
 database:{
   db: 'private_npm',
   username: 'root',
   password: '',
   dialect: 'mysql',
   host: '127.0.0.1',
   port: 3306,
   pool: {
     maxConnections: 10,
     minConnections: 0,
     maxIdleTime: 30000
   }
 },
 registryHost:'localhost:7001',
 scopes:['@icepy']
}

然后我们可以使用这两个函数来启动cnpmjs.org:

代码语言:javascript
复制
const cnpm = require('cnpmjs.org');const config = require('./config');cnpm.startWorker(config);cnpm.startSync(config);
代码语言:javascript
复制
$ node index.js
[Sat Jun 02 2018 13:21:59 GMT+0800 (CST)] [worker:2888] Server started, registry server listen at 127.0.0.1:7001, web listen at 127.0.0.1:7002, cluster: false

演示

偷懒的给大家演示一下,正式环境不要像我这样。

代码语言:javascript
复制
$ vim ~/.npmrc

直接在.npmrc 中配置 registry=http://localhost:7001/

登录本地的npm:

代码语言:javascript
复制
$ npm login

用户名和邮箱输入在config.js文件中配置好的,密码随便填。

创建一个项目:

代码语言:javascript
复制
$ mkdir test && cd test$ npm init -y
$ touch index.js

将package.json文件中的name修改为@icepy/test

上传:

代码语言:javascript
复制
$ npm publish

安装:

代码语言:javascript
复制
$ mkdir test1 && cd test1
$ npm init -y
$ npm i @icepy/test --save

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子曰五溪 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 演示
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档