6

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

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

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

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

4

2 回答 2

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 数据 npm ERR!404 404 未找到:grunt-package-minifier npm ERR!404 npm 错误!404 'grunt-package-minifier' 不在 npm 注册表中。

于 2014-07-28T23:49:26.167 回答
1

FWIW grunt-package-minifier:。我的用例有点不寻常,因为我们正在开发一个跨浏览器扩展框架。与标准 NodeJS 部署类似Browserify和不同,我们希望最小化我们的发行版的大小,包括任何 CommonJS 模块。但与Browserify我们支持 CommonJS 不同的是,我们可以保留模块结构,而不是将所有内容连接到一个大文件中。

本质上,我删除了所有的package.json.README 文件和测试文件等,node_modules但将基本的 JavaScript 文件保留在一个可供 CommonJS 模块加载器使用的结构中。

于 2013-07-01T00:59:48.493 回答