我想用杯和相关的前端工具链在Windows托管开发环境。我正在尝试使用诸如Browser-Sync之类的gulp插件,因为node_modules文件夹图将扇区窗口文件路径浪费太长以至于无法复制文件。我希望现在在Windows上处理这个问题的实用方法,无论Node社区将来可能提供或不提供的npm在Windows上的可用性。
2问题
是否有适用于Windows的新公共管理的工作流程,只是工作它的目的的方法是什么? “运行命令和文件安装”(例如,可以与OSX上的npm,Linux上的npm,ruby gems或甚至nuget相媲美)每次我使用时,我都不想摆弄一大堆手动文件编辑,符号链接等Windows上的npm。
是否有一个记录良好,稳定的Cygwin工作流程,用于npm和节点执行以解决Windows API文件路径限制?下面列出
血淋淋的细节...
一般问题
- 运行NPM从一个标准的Windows命令提示符下安装失败的深度嵌套node_modules层次。
- Per Joyent的github repo线程this is an acknowledged issue对于Windows中心环境中的开发人员没有适合的解决方法。 (真的吗?)
- NT内核支持多达32,767个字符的文件路径长度。
- Windows API的MAXPATH限制为260个字符。
- 的Windows API处理文件操作对所有主要的Windows外壳和诸如此类的东西,包括:资源管理器中,CMD,PowerShell中,MYSgit庆典等(?MS真的有多久NTFS一直围绕?)
- Cygwin的支持长文件路径,但由于crlf格式化,npm.cmd无法正常工作。我尝试了npm上的DOS2Unix转换来使它与Cygwin一起工作,但似乎还有其他问题。
我现在的黑客
- 创建一个 “N” 文件夹作为C的根目录的临时区域:\,因为这 缩短我的文件夹路径。
- 在“n”文件夹内运行npm以安装我需要的任何模块。
- 启动Cygwin并使用cp将node_modules文件夹复制到目标项目中。
- 当依赖关系发生变化或需要启动新项目时,请清洗并重复。
其它不受欢迎的解决办法
符号链接可用于缩短文件路径,但这些缺憾黑客。随着npm生态系统的发展,嵌套的依赖链将变得太长,并且这种解决方法变得无法使用。
将所有依赖添加到根文件夹的package.json文件在我遇到的一个线程中提到。虽然这种方法会使文件夹结构扁平化并防止重复模块的加载,但此解决方法感觉不自然。它还会杀死npm的可用性,耐久性和生产力,因为您必须手动或使用一些黑客脚本来手动安装文件和文件夹。该方法也容易受到符号链接方法可能最终遭受的相同命运的影响。
我几乎以为我这个解决。通过在以下两个文件上运行dos2unix util,我得到了Cygwin与npm的协同工作:npm.cmd和npm – 2014-10-04 00:30:21
Windows API路径限制使得npm不可用,因为一些npm模块使用Visual Studio来构建文件。这是我在npm浏览器同步时收到的错误:C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Microsoft.CppBuild.targets(301,5):错误MS B3491:可能不要将文件写入文件“Release \ obj \ validation \ validation.tlog \ validation.lastbuilds tate”。指定的路径,文件名或这两者太长。完全限定的文件名必须少于260个字符,且目录名称必须少于248个字符。 – 2014-10-04 00:33:59
我可能有一个“taffy-pulling”方法来获取在Windows上加载npm的节点模块。它涉及以下几个步骤:npm install,npm dedupe,npm shrink和rm -r node_modules。重复这样做似乎在某种程度上消除了长文件路径,但这有点像拉太妃糖(例如,直到你完成了才完成)。任何人编写这个或编写一个自动化工具,使这个更多的交钥匙? – 2014-10-04 03:04:46