Nodejs 怎么让新建的express包用公共的node_module? 因为不想每个包都安装一个node_module

Nodejs 怎么让新建的express包用公共的node_module? 因为不想每个包都安装一个node_module

怎么让新建的express包用公共的node_module? 因为不想每个包都安装一个node_module

10 回复

要解决这个问题,我们可以通过创建一个共享的 node_modules 目录来避免在每个 Express 包中重复安装相同的依赖项。以下是具体步骤:

步骤 1: 创建共享的 node_modules 目录

首先,在项目的根目录下创建一个名为 shared-node-modules 的目录,并将所有常用的 node_modules 放入该目录。

mkdir -p shared-node-modules

步骤 2: 链接到共享的 node_modules 目录

然后,在每个 Express 包中创建符号链接,指向共享的 node_modules 目录。

假设你的项目结构如下:

my-project/
├── package.json
├── app1/
│   ├── package.json
│   └── index.js
└── app2/
    ├── package.json
    └── index.js

你可以在每个应用的目录中创建到 shared-node-modules 的符号链接:

cd app1
ln -s ../../shared-node-modules/node_modules node_modules
cd ../app2
ln -s ../../shared-node-modules/node_modules node_modules

步骤 3: 安装共享依赖

确保在 shared-node-modules 目录中安装所需的依赖。例如:

npm install express

示例代码

shared-node-modules/package.json

{
  "name": "shared-node-modules",
  "version": "1.0.0",
  "description": "Shared node_modules for multiple projects",
  "dependencies": {
    "express": "^4.18.2"
  }
}

app1/package.json

{
  "name": "app1",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {}
}

app1/index.js

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('App1 listening on port 3000!');
});

总结

通过这种方式,你可以在多个 Express 应用之间共享 node_modules,从而减少磁盘空间占用和安装时间。只需确保在共享目录中正确安装依赖即可。


不是很理解,文件夹放在查找的路径上就好了。。。

按照nodejs的module读取机制,你可以放到global-path中或者install-path。如果你不知道这2个位置就在上一级文件夹下新建node_module作为公共module使用。结构如下:

|-c:\\
    |-node_apps
        |-expresss_test_app
            |-node_modules                 //express_test_app独享的node_modules
                |-ejs
                |-mongodb
            |-app.js
            |-package.json
        |-rrestjs_test_app
            |-app.js
            |-package.json
        |-web_socket_test_app
        |-node_chart_test_app
    |-node_modules                         //公共node_modules
        |-rrestjs
        |-expresss
        |-jade
        |-MIME

在 /usr/local/lib/node_modules 下面不是有一个node_modules么,就是问,如何都用这个modules的。

你要想想,你部署的时候全局没有包,本地也没有包,那不歇菜了。 所以默认用自己的包是为了保险。这个不要有洁癖就行了。

在根目录,用ln 命令建立一个软连接…

express库的package.json写了很多依赖库,npm install 的时候会检查这些依赖库在当前项目根目录的“node_modules”目录有没有安装对应的库,如果没有,就自己去下载一份放在express目录下的“node_modules”目录。如果已经有了,就不会重复安装。

要让多个 Express 包使用同一个 node_modules 目录,可以通过创建一个共享的 node_modules 目录,并通过符号链接(symlink)将该目录链接到各个项目的 node_modules 中。这样,你只需要在一个地方安装所有依赖项,而其他项目可以共享这些依赖项。

以下是如何实现这一目标的步骤:

  1. 创建一个共享的 node_modules 目录。例如,可以在你的用户主目录下创建一个名为 shared-node-modules 的目录。

    mkdir ~/shared-node-modules
    
  2. 在共享的 node_modules 目录中安装所需的依赖项。例如:

    npm install express
    
  3. 对于每个 Express 项目,创建一个指向共享 node_modules 的符号链接。例如,假设你的 Express 项目位于 /path/to/your-project

    cd /path/to/your-project
    ln -s ~/shared-node-modules/node_modules ./node_modules
    

示例代码

创建共享 node_modules 目录

mkdir ~/shared-node-modules

安装依赖项

cd ~/shared-node-modules
npm init -y
npm install express

创建符号链接

# 假设你的项目路径是 /path/to/your-project
cd /path/to/your-project
ln -s ~/shared-node-modules/node_modules ./node_modules

注意事项

  • 使用这种方法时,请确保所有项目使用的依赖版本一致,以避免潜在的兼容性问题。
  • 如果需要更新依赖项,只需在共享的 node_modules 目录中运行 npm update,然后重新创建符号链接即可。

通过这种方式,你可以减少重复安装相同的依赖项,从而节省磁盘空间并简化依赖管理。

回到顶部