npm
作为一种包管理工具,无论你是泛前端还是大前端都已经离不开它。其中在实际开发时,会有很多自定义组件或常用组件,可以放置在npm私服仓库中,以供可以重复使用及集中管理
文章目录
1. Node
1.1. 下载
下载地址:https://nodejs.org/zh-cn/download/releases/
个人下的10版本
1.2. 配置
- 使用FileZilla将文件上传至服务器
- 执行解压命令并修改文件名:
tar -xvf node-v10.23.2-linux-x64.tar.xz
mv node-v10.23.2-linux-x64 node
- 建立软连接:
ln -s /root/NodeRepository/node/bin/npm /usr/bin/
ln -s /root/NodeRepository/node/bin/node /usr/bin/
- 执行
node -v
,npm -v
测试
2. GIt
2.1. 安装
- linux有两种方式:yum和编译源码,个人使用的是yum,毕竟操作简单
- 执行命令
yum -y install git
,完成后执行git --version
查看是否成功。 - 默认yum安装git是安装在目录
/usr/libexec/git-core
中
3. Mysql
3.1.安装配置
安装教程参考文章:Linux系统安装MySql8教程
3.2. 创建数据库
使用Navicat新建数据库cnpmjs
(名称自定义,需与Cnpm.org配置文件中的数据库名一致)
个人使用Navcat连接创建,如图:
3.3. 导入数据
使用Navcat,选中cnpmjs
运行sql文件,sql文件由Cnpm.org提供。
地址:db.sql
导入后如图:
注意
建议新建一个用户,权限和root用户一致。因为root默认加密方式为caching_sha2_password
,需修改为mysql_native_password
,否则当启动cnpm服务时会报异常。
4. Cnpm.org
4.1. 拷贝项目
执行命令:
git clone https://github.com/cnpm/cnpmjs.org.git
4.2. 配置
使用cd
命令定位到cnpmjs.org
目录,执行
vim /cnpmjs.org/config/index.js
修改的部分,其他保持默认即可,未详细了解其他配置的作用:
/**
*注释此行,因为此行只允许本地访问,如果是放在服务器,就访问不了了
*/
// bindingHost: '127.0.0.1',
/**
*添加管理员邮箱
*/
admins: {
// name: email
//fengmk2: 'fengmk2@gmail.com',
admin: 'xxxxxxxxx@qq.com',
//dead_horse: 'dead_horse@qq.com',
},
/**
*关于数据库的配置
* db:与mysql步骤中新建的数据库名对应
* username: 数据库登录的用户名,Mysql默认为root
* passowrd: 数据库登录密码
* dialect: 数据库类型,默认为sqlite,根据个人需要修改
* 其他默认或根据需要修改
*/
database: {
db: 'cnpmjs',
username: '*****',
password: '******',
// the sql dialect of the database
// - currently supported: 'mysql', 'sqlite', 'postgres', 'mariadb'
dialect: 'mysql',
// custom host; default: 127.0.0.1
host: '127.0.0.1',
// custom port; default: 3306
port: 3306,
/**
*默认值为‘r.cnpmjs.org’
* 修改为本地IP地址:7001后,其他机器可访问`http://ip:7001`
*/
// registry url name default:r.cnomjs.org
registryHost: '47.94.159.215:7001',
/**
*是否为私有模式,私有默认只有管理员才可推送,其他只有同步权限。默认为false
*/
enablePrivate: true,
/**
* 只允许带有以下前缀的包才能被支持操作,如`@huchx`
*/
scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test' ],
4.3. 运行
- 运行
npm i --verbose
安装依赖,--verbose
是为了显示详细日志。 - 执行
node dispatch.js
运行服务,注意:必须实在cnpmjs.org
根目录下运行,
日志如图:
当出现Server started
时,即为启动成功。
注意
- 关于cnpmjs服务启动时出现了很多异常,有
配置
错误、数据库
错误、插件
错误等,未及时记录,所以未记录错误是在哪一步出现的。如出现异常,参考6.错误整理
- 个人使用的阿里云,需要在安全组中添加允许访问
7001/7002
接口
4.4. 访问
使用其他机器访问http://ip:7001
,ip为服务器的ip,如图:
访问http://ip:7002
,如图:
5 发布
5.1. 切换镜像地址
执行命令
shell npm config set registry=http:ip:7001
将镜像地址切换为自己的地址
5.2. 添加用户
执行命令:
```shell
npm adduser
Username: admin
Password: 自定义密码
Email: `4.2配置`中admins中admin的邮箱地址
```
>注意:由于`4.2配置`中设置了仅管理员可发布,所以`username`和`email`要和配置中的字段值一致
5.3. 登录
执行命令
npm login
usernameUsername: 与`5.1.添加用户`字段保持一致
Password: 与`5.1.添加用户`字段保持一致
Email: 与`5.1.添加用户`字段保持一致
5.4. 编译
> 关于npm项目package.json配置暂未整理文章
使用angular `ng`命令编译后报异常:`node --eval "console.error('ERROR: Trying to publish a package that has been compiled by Ivy. This is not allowed.\nPlease delete and rebuild the package, without compiling with Ivy, before attempting to publish.\n')" && exit 1`
错误原因:编译使用了Ivy,未懂Ivy是什么
解决方案:编译使用`--prod`参数,如`ng build xxxName --prod`
5.6. 发布
执行npm publish
发布。
注意:发布后只能设置依赖包版本过时,不可删除。但是可以考虑删除服务器数据库
cnpmjs
(关于cnpmjs存储数据的库)
6. 错误整理
-
Unhandled rejection SequelizeConnectionError: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server
错误原因:这个错误应该是发生在node dispatch.js
时。原因时mysql root用户默认的加密方式为caching_sha2_password
,需要修改为mysql_native_password
解决方案:将用户的加密方式修改为mysql_native_password
,执行命令,其中nowadmin
为自己的用户名ALTER USER `nowadmin`@`localhost` IDENTIFIED WITH mysql_native_password;
个人使用的方式是使用Navcat新增用户,其插件为
mysql_native_password
,权限与root保持一致,然后cnpmjs.org和数据库连接使用的都是新增的数据.如图:
-
g++: command not found的解决
错误原因:未安装g++插件
解决方案: 执行命令yum -y update gcc yum -y install gcc+ gcc-c++
执行完成后重新启动服务。
-
ERR! sqlite3@5.0.0 install: node-pre-gyp install --fallback-to-build
错误原因:未安装node-pre-gyp插件
解决方案: 执行命令npm install -g node-gyp
,如果需要,可以再执行npm i sqlite -s
-
Linux npm install 装包时提示Error EACCES permission denied
错误原因:没有权限
解决方案:执行sudo nom i --verbose
-
ln -s Too many levels of symbolic links
错误原因:链接目录层次或链接数太多
解决方案:删除全部全部链接,退出服务器连接重新连接,然后进行软连接