部署

完成开发并且在开发环境验证之后,就需要部署给我们的用户了。

i18n

构建

先执行下面的命令,

npm run build

几秒后,输出应该如下:

> delicate-rs@5.0.0-beta build /Users/delicate/delicate-web
> umi build

[21:13:17] webpack compiled in 43s 868ms
 DONE  Compiled successfully in 43877ms          21:13:17

File sizes after gzip:

  1.3 MB     dist/vendors.async.js
  308.21 KB  dist/umi.js
  45.49 KB   dist/vendors.chunk.css
  36.08 KB   dist/p__chart__highCharts__index.async.js
  33.53 KB   dist/p__user__index.async.js
  22.36 KB   dist/p__chart__ECharts__index.async.js
  4.21 KB    dist/p__dashboard__index.async.js
  4.06 KB    dist/umi.css
  ...

build 命令会打包所有的资源,包含 JavaScript, CSS, web fonts, images, html 等。你可以在 dist/ 目录下找到这些文件。

如果有使用 HashHistory 、 部署 html 到非根目录、静态化等需求,请查看Umi 部署

本地验证

发布之前,可以通过 serve 做本地验证,

$ yarn global add serve
$ serve ./dist

Serving!

- Local:            http://localhost:5000
- On Your Network:  http://{Your IP}:5000

Copied local address to clipboard!

访问 http://localhost:5000,正常情况下法应该是和 npm start 一致的(接口可能无法获取到正确数据)。

部署

接下来,我们可以把静态文件上传到服务器,如果使用 Nginx 作为 Web server,你可以在 ngnix.conf 中这样配置:

server
	{
		listen       80;
        # 指定可访问的域名
		server_name web.delicate-rs.com;
        # 编译后的文件存放的目录
		root  /home/www/delicate-web/dist;

        # 代理服务端接口,避免跨域
		location /api {
			 proxy_pass http://*.*.*.*:8090/api;
		}

        # 因为前端使用了BrowserHistory,所以将路由 fallback 到 index.html
		location / {
				index  index.html;
				try_files $uri $uri/ /index.html;
		}
	}

重启 Web server,访问 http://web.delicate-rs.com ,你将看到正确的页面。

nginx -s reload

类似的,如果你使用 Caddy 作为 Web server,你可以在 Caddyfile 中这样配置:

web.delicate-rs.com {
        gzip
        root /home/www/delicate-web/dist
        proxy /api http://localhost:7000

        rewrite {
                if {path} not_match ^/api
                to {path} {path}/ /
        }
}


web.delicate-rs.com/public {
        gzip
        root  /home/www/delicate-web/dist/static/public
}