需要JS优化/连接的网站文件的部署策略

时间:2014-03-23 10:42:37

标签: javascript git optimization requirejs web-deployment

我的问题部分是技术性的,部分是关于部署策略和工作流程。我使用Require JS构建了一个项目。它包含许多不同的js模块,并基于Kirby CMS构建。项目的目录结构如下:

project    
  assets    
    styles
      style.css
    js   
      scripts   
        script1.js
        script2.js
        script3.js  
      vendor   
      app.js
    images    
    fonts    
  content
  ... 
  kirby folders
  ....

文件app.js在我网站页面的页脚中调用,如下所示:

<script data-main="/assets/js/app" src="/assets/js/vendor/require.js"></script>

它通过调用requirejs.config()函数来配置RequireJS,然后使用RequireJS的requirejs()函数调用加载其他所有内容的主脚本文件。

我使用RequireJS' s optimization tool来编译项目,使优化文件全部转储到名为dist的目录中(我刚从this tutorial获取的名称)。所以最后dist包含资产下每个目录和文件的复制,只进行了优化,文件app.js是我在项目中拥有的所有js模块的连接和优化版本。到目前为止一切都很好。

然而,我不确定的是我应该如何使用所有代码的这个新的二级版本。例如,如果我想在没有所有源js文件的情况下将站点版本部署到生产服务器?每次我部署网站时,我都需要查看我的代码,并且在我引用assets目录下的文件的每个地方,我都需要将其替换为dist。我使用git和beanstalk进行部署。实现此目的的一种方法是管理不同的分支以进行分段,生产和开发,其中生产和分段分支对dist下的文件有引用,但这看起来很尴尬。

所以我的问题是给出了这种优化设置,如果你看一下上面链接的教程就是这样做的一种方法,那你如何管理切换到一切无条件的优化版本,而不必去回到你的代码并改变一切?我在这里缺少一些关键部分吗?

1 个答案:

答案 0 :(得分:2)

  

每次部署网站时,我都需要查看我的代码,并且在我引用assets目录下的文件的每个地方,我都需要将其替换为dist。< / p>

我查看了您链接到的教程,但没有看到教程是如何实现的。本教程不使用绝对路径,因此应该从dist以及包含预优化源的目录进行部署。如果您不能为您的应用程序执行此操作,那是因为您已经完成了与本教程不同的操作。例如,您的script代码会显示绝对路径。

因此,解决方案是设计应用程序以避免绝对路径。这样,从dist部署时,您不必更改路径。我正在使用这种方法来部署我的某个应用程序的优化和非优化版本。