在实际的工作中,有遇到一个问题:各个平台的开发环境不一致!!!
不一致的原因,取决于:
node.js版本不一致
npm的版本不一致
操作系统不一致
解决办法
使用nvm管理node.js版本,保持版本一致,这个在mac和linux中效果很好,但是反人类的window,呵呵...
保持npm版本一致,不同版本的npm生成的node_modules文件夹是有可能不一致的
使用新出炉的yarn管理包,锁定版本
结果:
然而并没有什么卵用
在公司,使用mac能把项目跑起来,然后回到家,用archlinux一跑,立马就跪了
当然这个只是小问题
关键是,我们的美工,使用window(反人类的东西),结果你懂的,每次配置环境,说多了都是泪
待商榷的方案
使用docker搭建一个容器,共有容器,然后映射外部目录,这样就能保证大家的开发环境一致。
没错,这次又是window出了问题,不能够watch文件变化,mac和linux均正常。
各位有什么好的解决方案
最后吐槽
node-sass搞尼玛那么多依赖,还各种问题
npm强制锁版本,这是最简单且暴力的方法。
其实你的这个问题不仅是前端或node有,linux开发、php开发(如果也用库控制工具)也会面临。只不过npm的库更新的比较快。公司在开发vue时用的1.0,等准备发布了npm上都更新到2.0了,几乎所有人写的代码都报废了。多数人向来都是拿来主义,完全不知道npm命令行怎么敲,都是复制粘贴的,所以完全不知道咋回事。只有C等非常传统的开发语言没这种问题(但是天天上debian上抠源码片段也挺痛苦的)
另一种比较暴力的办法,是开发leader自己固定一个node_modules目录,之后分发给下属开发者,下面的人直接用这个目录,不自己运行npm。不过这个可能仍然解决不了windows上的问题。
docker什么的不太推荐,那样子会有共享开发环境的问题,如果npm都解决不了,混用开发环境后互相坑害的问题会更大。
我现在在公司里用的就是npm锁版本的方式,另外虽然开发办公用windows,但所有文件都跑在本地虚拟机CentOS上,也没有长文件名问题了。当然这么做自己可以,要求其他人就太难了。
不好意思,公司前端全线配 Mac Pro,设计全线 iMAC。
有这个时间折腾,都够给程序员买电脑的钱了。
其次,node-sass 确实尼玛问题多。。。 less 你值得拥有
再次,npm 也可以锁定依赖版本的, npm shrinkwrap。
完全不能理解你为什么会有这么奇怪的问题
1、nodejs你们一个开发小组都不能控制版本号相同?统一定下一个版本号不允许自己升级这都搞不定你还开公司?
2、npm版本号问题同上
3、npm安装的包本来就不同系统不通用的,难道不是一个package.json定好所有包的版本号,通过git之类的版本控制方法来同步代码,所有人自己执行npm install来安装吗?
我开发用的三台机器mac,fedora,win10都在用,怎么就每遇到你说的任何一个状况?
另外你们公司前端开发都用mac和Linux?做IE适配的时候怎么做的?开虚拟机?哦呵呵呵,也是不嫌无聊了
还windows反人类,无知者无畏。你做前端开发一个IDE(webstorm一类,完全跨平台)或者编辑器(atom,vscode,vim,emacs之类,同样跨平台),一个浏览器(chrome,firefox跨平台),加几个命令行运行脚本(npm脚本,node后台,同样跨平台),我完全看不出在团队有人必须要用windows的情况下有任何不用windows不行的理由