【问题标题】:How to make node.js work without node_modules when bundled with webpack?与 webpack 捆绑时如何使 node.js 在没有 node_modules 的情况下工作?
【发布时间】:2019-01-26 05:44:55
【问题描述】:

我想部署一个应用程序,而不必捆绑文件夹中的所有 node_modules。

所以不要部署这个文件夹:

  • app.js
  • node_modules(大文件夹)

有类似的东西:

  • app.js
  • binary_dependencies

binary_dependencies 中应该只包含不能包含在app.js 文件中的二进制文件。

原因是yarn install会在docker中创建一个很大的层(500MB),上传很慢。我想缩小那个尺寸。

【问题讨论】:

  • 你可以忽略node_modules并在服务器上运行npm install来下载这些依赖项。
  • 那么捆绑的js文件如何访问捆绑的js文件中没有的二进制node_modules呢?

标签: node.js docker webpack yarnpkg


【解决方案1】:

使用 package.json 文件上传代码,然后 cd 到文件夹并运行 npm install 请注意您正在安装的版本,假设您有以下内容:

"dependencies": {
    "bluebird": "^3.5.1",
    "body-parser": "^1.18.3"
  }

改成:

"dependencies": {
    "bluebird": "3.5.1",
    "body-parser": "1.18.3"
  }

【讨论】:

  • 谢谢,但您的解决方案仍有 node_modules 文件夹。我在问如何将 node_modules 捆绑在 webpack 的 bundles 输出文件中,并且只保留无法在 js 代码中捆绑的二进制模块。
【解决方案2】:

就我而言,我没有任何“binary_dependencies”——所有提供的模块都捆绑在“app.js”中。然而,起初我不得不禁用webpack-node-externals,因为它故意从我捆绑的“app.js”中排除了一些模块。禁用模块后,我的 docker 容器上必须只有“Node”和 app.js”。通过运行“node app.js”,我能够启动我的“express.js”服务器,而无需提供“node_modules”因为它们已经捆绑在我的“app.js”中了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 2017-06-16
    • 1970-01-01
    • 2018-06-23
    • 2018-10-26
    • 2017-10-10
    • 2017-01-24
    • 2022-12-25
    相关资源
    最近更新 更多