有没有办法让npm取消建立node_modules下的所有模块?像npm rebuild那样删除所有构建工件但不重建它们?
我遇到了一个奇怪的问题 - 显然有些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不是一个选项:)
我正在使用Node.js在JavaScript中实现客户端应用程序.因为我将在许多机器上部署该软件,所以我想尽量减少我分发的软件包的大小.特别是,我想从node_modules中删除任何不必要的文件.
对于初学者来说,这意味着对依赖树进行重复数据删除和修剪,这npm
可以为我做.但我还想删除所有package.json
文件和(特别是)部署不需要的任何其他文件.在我使用的许多软件包中,有大量的测试,多个版本的文件(缩小,浏览器化等)等.我只需要正在运行的应用程序实际使用的JavaScript文件.否则我将分发一些实际上没有使用的100Kb文件.
我知道node-browserify
但我的应用程序将在CommonJS环境中运行,而不是浏览器,所以我想将模块分开并加载它们require
.
我正在考虑编写一个使用依赖树的Grunt插件required
,将运行时所需的JavaScript文件拉出来并将它们写入树结构,以便可以使用它们加载require
(只需直接加载模块而无需使用package.json
).但在我解决之前,我想确保没有人为我做过这件事.