【发布时间】:2017-09-22 21:26:30
【问题描述】:
我是节点和部署的新手。我知道我在主分支上所做的每一次更改都需要提交和推送。这样做时我的 Heroku 应用程序不会更新,我已经解决了它,因为它从我的 /dist 文件夹中的 repo 中提供文件。
所以我想知道,每当我更改我的代码时,我是否必须删除我的 dist 文件夹并再次运行“npm run build”以便我的 dist 文件夹是最新的?
【问题讨论】:
我是节点和部署的新手。我知道我在主分支上所做的每一次更改都需要提交和推送。这样做时我的 Heroku 应用程序不会更新,我已经解决了它,因为它从我的 /dist 文件夹中的 repo 中提供文件。
所以我想知道,每当我更改我的代码时,我是否必须删除我的 dist 文件夹并再次运行“npm run build”以便我的 dist 文件夹是最新的?
【问题讨论】:
您实际上并没有在每个 heroku 部署中替换 dist 文件夹。您需要删除 heroku 服务器上现有的 dist 文件夹。因此,为了处理这个问题,您可以使用 heroku preinstall 脚本挂钩。您的 package.json 文件应如下所示:
scripts: {
preinstall: "rm -rf /dist"
}
您现在可以运行脚本以在 heroku 上进行部署,它会首先删除 dist 文件夹,然后部署新的构建。
【讨论】:
我不知道你的构建过程涉及什么(如果你愿意,你可以发布你的 package.json),但你可能不需要删除你的 dist 文件夹,否则,是的。您构建代码然后部署它。
自动执行此操作的一种方法是设置持续交付流程。这将是像 Jenkins 这样的构建服务器或像 Semaphore CI 这样的服务,在推送时触发,为您构建代码并进行部署。
编辑:如果您使用像他们的webpack 模板这样的 vue-cli 模板,则无需删除 dist 目录,构建脚本会为您处理。 @m-ketan 建议使用 Heroku 的构建钩子是一个很好的建议,但我认为您可能想要使用 postinstall 并让它调用 npm run build。见https://devcenter.heroku.com/changelog-items/844
【讨论】: