2017-03-02 69 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 

但我真的不喜歡它:-)