React项目从构建到上线全过程
创建项目
早期的项目多用gulp去构建打包上传,
如今的react项目一般都会使用webpack去构建启动
在此先推荐几个优秀的脚手架
ouxu的脚手架包括2个react-dva脚手架,2个react-router脚手架
xinzai的脚手架具有路由表功能
上传项目
手动部署
通过webpack的配置进行项目打包生成dist文件,
再用scp命令上传至服务器1
2
3
4
5scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_ip:remote_folder
scp local_file remote_ip:remote_file
自动化部署 – fjpublish
安装了node.js6.0+及以上的之后,使用一个命令即可完成fjpublish的安装1
npm install fjpublish -g
-g是可选的全局安装,为了以后使用方面建议直接-g
注意: fjpublish依赖一份配置文件,默认是fjpublish.config.js,如果不想在版本库中提交服务器安全信息,请千万记得把它加入忽略文件中,如.gitignore
下面给给出一份最简形式的文件以供大家参考
fjpublish.config.js
1 | const config = require('./pushConfig') |
pushConfig.js1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17module.exports = {
fjPublish: {
modules: [{
name: '生产环境',
env: 'prod', //自选的一个命令
ssh: {
host: '', // 服务器地址
port: 22, // 端口
username: '', // 用户名
password: '' // 密码
},
buildCommand: 'build', // 构建命令 === npm run build
localPath: './dist', // 构建后上传文件
remotePath: '' // 服务端路径
}]
}
}
在项目文件目录下输入命令
1 | fjpublish env prod |
即可完成整个项目的打包上线和发布
服务器改动
以nginx启动的服务器为例
进入nginx所在目录的conf.d或者sites-enabled文件夹下编写nginx配置文件
区别在于conf.d下的文件必须以.conf结尾,而且服务器优先解析conf.d文件夹下文件
下面给出最简单的nginx配置
1 | server { |
完成配置文件后输入命令
1 | sudo nginx -s reload |
重启nginx服务
项目优化(可选)
react构建的项目一般都会很大,为了提高访问速度,可以配置CDN对项目进行加速
这里使用七牛云CDN
首先安装七牛云插件
1 | npm install qiniu-webpack-plugin |
创建webpack.config.js1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16const QiniuPlugin = require('qiniu-webpack-plugin')
const {qiniu} = require('./pushConfig')
module.exports = function (webpackConfig, env) {
if (env !== 'production') {} else {
webpackConfig.plugins.push(
new QiniuPlugin({
ACCESS_KEY: '',
SECRET_KEY: '',
bucket: '',
path: ''
})
)
}
return webpackConfig
}
修改pushConfig.js文件,添加1
2
3
4
5
6qiniu: {
ACCESS_KEY: '从七牛控制台查询',
SECRET_KEY: '从七牛控制台查询',
bucket: '从七牛控制台查询',
path: '自定义(形如 'FRONT/')'
},
.roadhogrc文件
修改
1 | publicpath:'七牛给的域名/path' |
补充
如果使用fjpublish发布修改后的项目,无需再重启服务器服务等操作