2017-03-02 68 views
0

我正在使用browserify打包的NPM/Redux应用程序(我们称之为Client),我现在正在考虑部署它。使用git,npm(browserify/watchify)和rails来设置和部署browserify build(dist)

  • 在编码时,我是否使用watchify来持续观察变化并重建应用程序;当然,这个输出没有被缩小,并且在javascript捆绑文件中包含调试和源代码映射。

  • 出于这个原因,我/dist/js/client.js是,到现在为止,包括在我.gitignore文件,但不是在.npmignore因为/dist/*需要它的最终方案。

Client实际上是在另一个非NPM(rails)应用程序,依赖于最终的javascript构建一个NPM包被使用。每当我部署我的rails应用程序,它将运行npm install,获取client,并需要使用它的构建。

两个选项:

  • 1)client一个postinstall脚本,实际运行npm run build

    • 临:这将是巨大的,并避免犯构建
    • 缺点:需要browserify ,babel,node-sass等,这些都是devDependencies,因此未包含在最后的production环境中(build失败,我不想将这些包添加为dependency,它对我没有任何影响。
  • 2)实际上与客户一起提交构建

    • 临:它的工作原理
    • 缺点:这是因为每当开发者模式,运行watchify,构建文件被烦取而代之,这可能会导致无意中提交了一个未分类的dev版本Client,并且从git的角度来看也是非常烦人的(总是会对分支进行未定义的更改,它会与其他开发人员等产生冲突)。
    • 我试着.gitignore该文件和git add --force它在同一时间,以便我可以有一个手册publish脚本,但git似乎并不喜欢它。

什么是正确的方法呢?

谢谢!

回答

0

其实,现在我使用 npm run release本地, 这是运行下面的脚本:

#!/bin/bash 
git stash 
git fetch 
git checkout -b "release/$(date +%Y%m%d-%H%M%S)" 
git pull origin master 
npm run build 
git add :/dist/* --force 
git commit -m '[NPM] (publish) Commiting build' 
git push origin HEAD 
git rm --cached :/dist/js/*.js 
git rm --cached :/dist/css/*.css 
git checkout @{-1} 
git stash pop 

但我真的不喜欢它:-)