一、npm run build
项目制作完成后需执行npm run build
操作将项目打包。
这时项目的目录下会生成一个 dist
文件夹,它里面又包含一个static
文件夹和一个index.html
文件,这是webpack
最终打包好的文件.
如果你打开这个index.html
会发现页面显示是空白的。打开控制台,细心的朋友可能会发现, script
标签的引入路径好像不对啊,因为 static
文件夹和 index.html
是在同一个目录下的,这里却是从根目录引入static
下的文件,正确的路径应该是 ./
开头的相对路径: src='./static/...'
或者 src='static/...'
其实这跟配置资源的路径有关,打开项目根目录 config
文件夹下的 index.js
,定位到 build
下的assetsPublicPath
(dev
下也有一个assetsPublicPath
,别搞错了,我就是在这里踩了第一个坑),把
assetsPublicPath: '/'
修改为assetsPublicPath: './'
重新执行npm run build
,再打开index.html
文件,页面就有内容了。
二、上传到github
本地预览问题解决了,接着我们把项目push
到 github。
在github建好仓库,然后git clone....
,git add .
,git commit -am "init"
,git push一系列操作后,发现dist
文件没有被上传到 github
上。这是为什么呢?
找到项目根目录的.gitignore
文件,这里设置一些文件名,对应的文件将不会被提交到 github
上面,而 dist
被设置在里面,所以就不能上传到 github
上了,我们可以把dist
从文件里移除。 当然还有另一种办法,就是在操作 git
命令时,把 git add .
改为 git add -f dist
意思是强制把 dist
文件提交到 github
。
好了,现在我们已经可以在 github 仓库里看到 dist 文件夹。接下来就可以设置预览效果了。
点击项目的 setting
项,然后找到Github Pages
选择
master branch
,保存,接着你会看到项目在线预览链接,点击链接.此时,你会看到页面一片空白,别急,在地址栏后面添加
dist
(因为 index.html
是在 dist
目录 下),回车,好了,线上页面效果出来了
三、另外一种方法
在项目的 master
分支上,混合了源代码和页面预览文件,能不能把两者分开?而且还有一个问题,index.html
总是在dist
路径下的,能不能项目名称直接跟index.html
。这里就引出另外一种办法了。
采用 github
的gh-pages
分支制作 GitHub Pages
,只把dist
添加到 gh-pages
分支,这样就把源代码和页面预览文件分开了
(先把本地的dist
文件夹删除,再上传到 github
,更新 master
分支)
git run build
git branch gh-pages //创建gh-pages分支
git checkout gh-pages //切换到gh-pages分支
git add -f dist //强制把dist文件夹提交到github
$ git subtree push --prefix dist origin gh-pages //把dist文件夹单独部署到gh-pages分支
这里要选择
gh-pages branch
,再点击连接,如果此时看到空白页面,别急,稍等一会(内容更新需要时间)好了,现在看仓库的
master
分支,不存在 dist
文件夹了,再看线上预览地址,也完美了.