如何从源代码编译 Bootstrap 作为 heroku 构建过程的一部分



我正在构建一个简单的节点应用程序,并使用Bootstrap来设置我的前端样式。我想通过从 GitHub 存储库加载应用程序来将应用程序部署到 Heroku。我不想把任何编译好的 CSS/JS 文件放在仓库里,这意味着从 GitHub 拉出源代码后,它们需要在 Heroku 上编译。

问题:Bootstrap的默认package.jsondevDependencies中具有其构建依赖项,因此依赖项不会安装在Heroku上,Heroku在生产模式下npm install运行。

具体来说,问题出现在我的postinstall脚本中,该脚本由cd node_modules/bootstrap && npm install && ../.bin/grunt dist组成。我自己的npm install命令最终没有安装任何东西,因为总体npm install --production忽略了 Bootstrap 的devDependencies .

在本地

安装 Bootstrap 依赖项的最佳解决方法是什么?只要 (1( 我不必将编译的文件放在源存储库中,并且 (2( 我仍然可以在生产模式下运行主npm install,我就可以更改我的工作流程。

编辑:除非有人能想到更好的解决方案,否则我认为我现在的选择如下:

  1. 构建 Bootstrap 的自定义 Github 分支,其依赖项在 dependencies 而不是devDependencies
  2. 构建一个自定义的 Heroku 构建包,以某种方式保持 Bootstrap 的依赖项完好无损
  3. 放弃原则,在本地编译引导,把编译好的文件放在我的源代码中
  4. 只需在开发模式下使用Heroku(显然不是一个好主意(

我想我会尝试选项 1,如果失败,我会选择选项 3。我仍然有兴趣听到人们提出的任何其他想法。

我会考虑使用postinstall.官方文档在这里关于Heroku。

由于您在部署时执行一些构建步骤,因此您需要一些 devDependencies(在您的情况下是引导源(,但 heroku 只会在生产模式下安装,就像您所说的那样。

与 heroku 工具带客户端连接时,运行:

heroku config:set NPM_CONFIG_PRODUCTION=false

你将拥有你的开发依赖项,并且能够生成。

您只需执行此操作一次(无需在每次部署时都执行此操作(。

PS:我不知道你的项目,但也许你需要把NODE_ENV放到production,这是命令:

heroku config:set NODE_ENV=production

你不需要把NPM_CONFIG_PRODUCTION标志放回原点,这就是在 heroku 上进行构建的目的。

但是,如果您愿意,可以使用以下工作流(您说打开以更改工作流(:

  • 忽略源存储库中的dist文件夹(应已忽略(
  • dist文件夹设为 git 存储库,并在 dist 文件夹的存储库中添加 heroku 的 git remote
    • cd dist
    • git init
    • git remote add origin git@heroku.com:project-name.git
    • git pull origin master
  • 确保您的构建例程不会删除此/dist/.git文件夹 - 您可以使用以下 glob(如果您使用 rimraf 或类似的东西与 grunt/gulp 或其他什么(:['/dist/**/*','/dist/!.git/**/*']

这样,您的工作流程将是:

  • 构建(使用您的工具(
  • cd dist
  • git add .
  • git commit -m "new version bundled"
  • git push origin master那里,您dist文件夹中,其中 origin 是您的 heroku 的遥控器

你可能会对github页面做同样的事情......

最新更新