我正在使用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似乎并不喜欢它。
什么是正确的方法呢?
谢谢!