我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?
Posted
技术标签:
【中文标题】我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?【英文标题】:Should I minify node_modules or should I use the minified version provided for deploy on client? 【发布时间】:2015-02-03 15:04:45 【问题描述】:我最近从 require.js 迁移到 webpack,并且一些 node_module 内置了 .min 文件。当我使用 node_module 中的文件时,我只需执行 require('my-module')
并立即加载它而无需任何配置。但这将加载开发版本或更大的版本。
例如 react 已加载 require('react/addons')
但这不是缩小版本。
我的问题是:
我应该正常加载模块然后缩小所有内容吗? 我应该使用他们提供的 .min 文件,然后再次缩小所有内容吗? (这样我节省了很多磁盘) 有更好的方法吗?自动加载缩小文件会很好。目前,我正在更改 webpack 的别名以在构建应用程序时加载缩小版本:
myConfig.resolve.alias.phaserUnFixed = "nodeModules/phaser/build/custom/phaser-no-physics.min.js";
myConfig.resolve.alias.react = "nodeModules/react/dist/react-with-addons.min.js";
myConfig.resolve.alias.lodash = "nodeModules/lodash/dist/lodash.compat.min.js";
myConfig.resolve.alias.moment = "nodeModules/moment/min/moment.min.js";
但这也不是一个好方法……你能想出更好的方法吗?
【问题讨论】:
【参考方案1】:我不知道这是否是您正在寻找的答案,但我认为在这种情况下,最好的做法是使用 webpack 将其丑化以用于生产,而不必担心加载缩小文件。让 webpack 在整个捆绑包上运行 uglify 将删除所有未使用的代码路径,然后无论如何都会缩小它。
【讨论】:
有一个名为 phaser 的库,它有不同的文件。默认包含许多其他工具。但它也有其他只有我需要的文件。整个文件是+1MB,我需要的部分是300KB。你有什么建议? 我会坚持让 webpack 缩小其余部分,例如 moment、lodash 和 react,但是对于移相器,我认为您可能应该使用别名,因为它的大小。它会减慢您的构建操作。如果在打包后进行 uglify,生成的输出文件将是相同的,但这只是构建时间的问题。 我也有同样的担忧,webpack 旨在摆脱在浏览器中异步加载的许多文件,但缺点是你以一个非常大的文件结束。可惜这个问题不受欢迎。很多人都在使用 webpack,很多人应该有这个顾虑。以上是关于我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?的主要内容,如果未能解决你的问题,请参考以下文章
当我将项目发布到GitHub时,我应该如何处理Grunt的node_modules目录?
我应该如何使用 browserify 和 babelify 转换 ES6 node_modules?
.min 或 src 作为 node_module 的 package.json 中的“主”文件