Bor*_*ard 91 windows deployment filenames node.js npm
我遇到了一个奇怪的问题 - 显然有些Node.js模块有如此深的文件夹层次结构,当Windows Copy-Item
路径超过250时,Windows复制命令(或我们实际使用的PowerShell )会遇到臭名昭着的"路径太长"错误chars long.
例如,这是单个Node模块可以创建的文件夹层次结构:
node_modules\nodemailer\node_modules\simplesmtp\node_modules\
xoauth2\node_modules\request\node_modules\form-data\node_modules\
combined-stream\node_modules\delayed-stream\...
Run Code Online (Sandbox Code Playgroud)
看起来很疯狂但是Node模块已经成为现实.
我们需要在部署期间使用复制粘贴(我们不使用像Heroku这样的"聪明"目标平台,其中Git部署是一个选项),这是对Windows的严重限制.
是不是有npm命令或者压缩node_modules
文件夹的东西,或者只包含运行时实际需要的东西?(节点模块通常包含test
我们不需要部署的文件夹等.)任何其他想法如何解决它?遗憾的是,不使用Windows不是一个选项:)
Ben*_*esh 62
只是为了增加这个...帮助我的另一件事是列出所有已安装的模块npm ls
.
这将给你一个模块和版本的树...从那里很容易识别哪些是重复... npm dedupe
没有为我做任何事情.我不确定这是一个错误还是什么(Node v 10.16)
因此,一旦确定了重复的模块,就可以使用它将其安装到根node_module目录中npm install dupemodule@1.2.3 --save-dev
.版本很重要.
之后,我清除了我的node_modules目录并重新开始了npm install
.
npm ls
获取所有已安装模块的列表.npm install module@version --save-dev
在根node_modules目录中安装这些模块并更新package.json.rmdir node_modules
删除node_modules目录.npm install
下拉依赖项的新副本.一旦我这样做,一切都更清洁.
我还建议您对package.json文件进行注释,以显示哪些文件被压缩以展平node_modules树.
Pet*_*ons 38
鉴于你的限制,我认为没有任何好的解决方案,但这里有一些可能有所帮助的事情.
npm dedupe
优化目录层次结构,这可能会缩短某些路径npm install --production
在没有开发工具的情况下安装node_modules
目录下your_project/node_modules/pkg_with_deep_deps
,这将允许它们具有足够短的路径但仍然有效.所以这就是your_project/node_modules/pkg_with_deep_deps/node_modules
.
require
应该能够在运行时正确找到它们.您只需要清楚地记录您手动更改的内容,为什么要这样做,并保持您自己的真实依赖关系准确地表示在package.json
这是一个github问题讨论,详细阐述了这个问题.
Ram*_*Vel 24
NPM V3(最近发布)的不上不下的依赖关系.检查发行说明在这里解决了这个问题https://github.com/npm/npm/releases/tag/v3.0.0下flat flat
部分.
关于这个问题的最后评论https://github.com/npm/npm/issues/3697
小智 11
我写了一个名为"npm-flatten"的节点模块,它可以在这里展示你的依赖关系:https://www.npmjs.org/package/npm-flatten
如果您正在寻找distrubtion,我还编写了一个NuGet包,它将在这里将完整的node.js环境与您的.NET项目集成:http://www.nuget.org/packages/NodeEnv/
反馈将是受欢迎的.
归档时间: |
|
查看次数: |
25387 次 |
最近记录: |