Javascript npm开销-如何处理?

Javascript npm开销-如何处理?,javascript,npm,gruntjs,gulp,npm-install,Javascript,Npm,Gruntjs,Gulp,Npm Install,当通过npm安装任何东西时,它会下载几十个不需要的文件。通常我在寻找一个库的最终版本,一个*.min.js文件或类似的文件,但其余的都是无用的 你如何处理这些无用的文件?您是手动删除它们还是使用任何构建工具(如gulp或grunt)生成最终应用程序 我很困惑,因为我的webapp中安装了大量npm模块,文件夹大小约为50 MB,但可能只有2mb。管理软件包 对于前端非开发包,我更喜欢。它维护包的缩小版和非缩小版 构建工具 使用或。我会选择大口大口地喝 将大大改进代码的吞咽任务包括: css和j

当通过npm安装任何东西时,它会下载几十个不需要的文件。通常我在寻找一个库的最终版本,一个
*.min.js
文件或类似的文件,但其余的都是无用的

你如何处理这些无用的文件?您是手动删除它们还是使用任何构建工具(如
gulp
grunt
)生成最终应用程序


我很困惑,因为我的webapp中安装了大量npm模块,文件夹大小约为50 MB,但可能只有2mb。

管理软件包

对于前端非开发包,我更喜欢。它维护包的缩小版和非缩小版

构建工具

使用或。我会选择大口大口地喝

将大大改进代码的吞咽任务包括:

  • css和js的缩小
  • 图像的优化/压缩
  • 连接和缓存以减少对服务器的调用数量
  • 包版本控制
  • 项目依赖项的自动注入
  • 外部依赖项的自动注入
  • js和css的静态分析
  • 基于代码更改的自动构建
  • 部署
  • 测试
节点

如果可以的话,把所有的开发工具交给node,把所有的发布插件交给bower。发布的应用程序中使用的大多数节点包都有一个bower安装对应程序

编辑


不要手动从节点删除任何内容,因为您不知道哪些包具有其他包作为依赖项。如果您担心其中可能有垃圾,请使用npm rimraf删除node_modules文件夹,然后运行npm install。最重要的是检查您的package.json是否保存了不必要的包。

npm安装--生产版

仅仅安装一个npm就可以带来开发和运行时的依赖关系。您还可以将服务器的ENV全局设置为production:
npm config set production


参见github问题。请注意,这不会让你只最终缩小所有的构建,但会大大减少膨胀。例如,库可能依赖于babel cli、babel-preset-es2015和要构建的uglifyjs(devDependency),但如果库还包括传输的缩小文件,则不需要这些

如果你使用npm来安装东西,我会说你最好使用gulp。这样,你的最终构建应该只有它所需要的。问题不是npm。这是因为库开发人员在他们的构建中包含了大量不必要的垃圾,有时是因为对npm的工作原理理解不足。如果您使用这些库中的一个,您还需要下载所有依赖项。@GOTO0这不好。例如,Lodash在一个文件夹中有564个文件。我个人将npm作为开发过程的管理者,而您需要用于dist副本的代码,例如缩小的js文件,我使用bower。大多数引人注目的lib都包含自己的bower任务,其中只包含最终lib的concat src和dist副本,不过如果需要,您可以克隆整个repo。然后,是的,grunt或gulp copy任务将dist文件复制到构建时所需的文件夹中。我将坚持我的示例,lodash-bower也安装了数百个文件,与npm相同,但具有其他fiel结构。@Tukkan,您不必担心开发环境中的文件数量。你是在大口喝还是咕噜?然后使用wiredep和inject自动管理依赖关系