【问题标题】:why Ghost node_modules is much larger on openshift than on local?为什么 Openshift 上的 Ghost node_modules 比本地大得多?
【发布时间】:2014-10-19 01:13:23
【问题描述】:

我正在使用 Openshift 部署我的 Ghost 博客。 我的整个代码包大约80m(包括生产node_modules,大约24m),mysql文件大约50m。 Openshift 向我显示一条警告消息,指出我已使用 97% 的总 1GB。这是怎么回事?如果正常的话,我愿意升级,但我想弄清楚是不是我做错了什么。

我使用 SSH 检查文件夹大小,du -m --max-depth=1 得到我的根文件夹的文件夹大小结果如下:

1       ./.node-gyp
1       ./nodejs
du: cannot read directory `./.ssh': Permission denied
1       ./.ssh
du: cannot read directory `./.sandbox': Permission denied
1       ./.sandbox
52      ./mysql
1       ./.gem
1       ./.openshift_ssh
1       ./.auth
1       ./phpmyadmin
58      ./git
334     ./app-root
du: cannot read directory `./.tmp': Permission denied
1       ./.tmp
1       ./.env
325     ./app-deployments
768     .

app-deployments 是否保存了以前版本的 app-root? 我找到了一个以提交日期作为文件夹名称的文件夹。

那么对于app-root文件夹:

4       ./logs
5       ./data
325     ./runtime
334     .

对于运行时文件夹:

140     ./dependencies
1       ./build-dependencies
186     ./repo
325     .

对于 repo 文件夹:

1       ./.openshift
7       ./core
5       ./content
175     ./node_modules
186     .

对于依赖文件夹,依赖文件夹是做什么用的?

1       ./nodejs
140     ./.npm
140     .

npm 文件夹是 npm 的全局文件夹吗? 当我的项目中有 node_modules 时,为什么还要将它安装到 glocal?可以改吗?

然后在 node_modules 中,我看到了 bower 模块,该模块在 package.json 中的 devDependencies 中定义。

我将 openshift 的 env var 设置为生产环境,为什么 devDependencies 中的所有内容仍然存在?

NODE_ENV=生产 NPM_CONFIG_PRODUCTION=true

如何删除这些额外的模块并节省一些磁盘空间?

【问题讨论】:

    标签: node.js npm openshift node-modules ghost-blog


    【解决方案1】:

    我的整个代码包大约80m(包括生产node_modules, 大约24m),mysql文件大约50m。 Openshift 向我展示了一个 警告消息,我已使用总 1GB 的 97%。这是如何 发生?

    这似乎是一个显而易见的答案,但请坚持下去。该消息意味着您的存储配额已满 97%。虽然您的代码可能只是其中的一小部分,但还有其他几项使用 OpenShift Gear 上的存储。例如,应用程序部署(见下文)有时会占用大量存储空间。您的 $OPENSHIFT_DATA_DIR (~/app-root/data) 中的内容也可以。

    app-deployments 是否保存以前版本的 app-root?

    是的,此功能允许您轻松回滚到应用程序的早期版本。缺点是它会消耗大量的默认存储空间。您可以使用

    禁用此功能

    rhc app configure <appname> -keep-deployments 0

    当我的项目中有 node_modules 时,为什么它仍然安装到 全球本地?可以改吗?

    此时节点模块无法全局安装,因此必须在您的设备中本地安装。

    我将 openshift 的 env var 设置为生产环境,为什么所有内容都在 devDependencies 还在吗?

    这与容器的工作方式有关。您所做的一切都存储在您的安全容器中。设置生产环境变量只是改变节点的启动方式

    如何删除这些额外的模块并节省一些磁盘空间?

    您可以尝试使用 npm 将其中的一些从您的设备上删除,但我建议您省去麻烦,或者摆脱上述应用程序部署,或者只是升级。

    【讨论】:

    • 我收到错误:Invalid number of deployments to keep: 0. Keep deployments must be greater than 0 and no greater than 1000.
    猜你喜欢
    • 2019-08-13
    • 2011-02-24
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2020-04-12
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多