压缩node_modules以进行客户端部署

时间:2013-06-21 15:33:19

标签: node.js npm gruntjs browserify

我正在使用Node.js在JavaScript中实现客户端应用程序。因为我将在许多机器上部署该软件,所以我想尽量减少我分发的软件包的大小。特别是,我想从node_modules中删除任何不必要的文件。

对于初学者来说,这意味着对npm可以为我做的依赖树进行重复数据删除和修剪。但我还想删除所有package.json文件和(特别是)部署不需要的任何其他文件。在我使用的许多软件包中,有大量的测试,多个版本的文件(缩小,浏览器化等)等。我只需要正在运行的应用程序实际使用的JavaScript文件。否则,我将分发一些实际上没有使用的100Kb文件。

我知道node-browserify但我的应用程序将在CommonJS环境中运行,而不是浏览器,所以我想将这些模块分开并用require加载它们。

我正在考虑编写一个使用required遍历依赖关系树的Grunt插件,提取运行时所需的JavaScript文件并将它们写入树结构,以便使用require加载它们(只需直接加载模块而无需package.json)。但在我解决之前,我想确保没有人为我做过这件事。

2 个答案:

答案 0 :(得分:2)

没有找到grun-package-minifier(这不是一个真正的答案。我想在上面的答案中得到满足,但我还没有足够的声誉:()。

npm install grunt-package-minifier --save-dev 密码: npm WARN package.json zigbee_gateway_js@0.0.0没有存储库字段。 npm WARN package.json zigbee_gateway_js@0.0.0没有README数据 错误的ERR! 404 404未找到:grunt-package-minifier 错误的ERR! 404 错误的ERR! 404' grunt-package-minifier'不在npm注册表中。

答案 1 :(得分:1)

FWIW:grunt-package-minifier。我的用例有点不寻常,因为我们正在开发cross-browser extension framework。与Browserify类似,与标准NodeJS部署不同,我们希望最小化分发的大小,包括任何CommonJS模块。但与Browserify不同,我们支持CommonJS,因此我们可以保留模块结构,而不是将所有内容连接成一个大文件。

基本上我从package.json中删除所有node_modules,README,测试文件等,但将基本JavaScript文件保存在可由CommonJS模块加载器使用的结构中。