Node.js 如何拥有项目根目录的绝对require/import路径?
我希望应用程序中的所有路径都与我的项目根相关,这样我就不必执行以下操作:Node.js 如何拥有项目根目录的绝对require/import路径?,node.js,path,webpack,Node.js,Path,Webpack,我希望应用程序中的所有路径都与我的项目根相关,这样我就不必执行以下操作: import foo from "../../bar.js"; var foo = require("../../bar.js"); 我的应用程序客户端是使用Webpack编译的,所以我认为我可以使用Webpack中的“解析”功能,但我不希望这样做,因为这会增加对使用Webpack的依赖性。后端使用节点/Express服务器 是否有在前端和后端都有效的解决方案?在您的包中。在以下json路径脚本中添加ln-fsn../'
import foo from "../../bar.js";
var foo = require("../../bar.js");
我的应用程序客户端是使用Webpack编译的,所以我认为我可以使用Webpack中的“解析”功能,但我不希望这样做,因为这会增加对使用Webpack的依赖性。后端使用节点/Express服务器
是否有在前端和后端都有效的解决方案?在您的包中。在以下json路径
脚本中添加ln-fsn../'node_modules/>。
:
{
"scripts": {
"postinstall": "ln -fsn ../ 'node_modules/>'"
}
}
这将在项目的节点_modules
中创建一个名为
的符号链接,该链接指向项目的根文件夹
假设您的文件结构如下所示:
project
├── bar.js
├── config
│ ├── database.js
│ ├── rabbitmq.js
│ └── env.js
├── seed
│ ├── soy.js
│ ├── wheat.js
│ ├── pumpkin.js
│ └── squash.js
├── foo
│ └── bar
│ └── baz
│ └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
从foo/bar/baz/qux.js
文件内部,我们可能需要seed/soy.js
文件,如下所示:
project
├── bar.js
├── config
│ ├── database.js
│ ├── rabbitmq.js
│ └── env.js
├── seed
│ ├── soy.js
│ ├── wheat.js
│ ├── pumpkin.js
│ └── squash.js
├── foo
│ └── bar
│ └── baz
│ └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
在您的package.json中,在以下json路径脚本处添加ln-fsn../'node_modules/>
{
"scripts": {
"postinstall": "ln -fsn ../ 'node_modules/>'"
}
}
这将在项目的节点_modules
中创建一个名为
的符号链接,该链接指向项目的根文件夹
假设您的文件结构如下所示:
project
├── bar.js
├── config
│ ├── database.js
│ ├── rabbitmq.js
│ └── env.js
├── seed
│ ├── soy.js
│ ├── wheat.js
│ ├── pumpkin.js
│ └── squash.js
├── foo
│ └── bar
│ └── baz
│ └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
从foo/bar/baz/qux.js
文件内部,我们可能需要seed/soy.js
文件,如下所示:
project
├── bar.js
├── config
│ ├── database.js
│ ├── rabbitmq.js
│ └── env.js
├── seed
│ ├── soy.js
│ ├── wheat.js
│ ├── pumpkin.js
│ └── squash.js
├── foo
│ └── bar
│ └── baz
│ └── qux.js
├── index.js
└── package.json
require('>/seed/soy')
是否要在开发过程中从根目录引用依赖项?由于webpack创建了一个monolith包,因此在clientYes上没有问题,但在客户端和服务器上都没有问题。i、 e.在某些情况下,我有客户端和服务器都使用的文件,它们之间有相对路径的依赖关系。您可以创建一个符号链接,指向您的src
目录,并将其放在node\u modules
目录中:ln-fs../src node\u modules/
。然后您可以require('src/bar')
。这仅限于node_modules文件夹中的项目,那么我想从根目录中的其他文件夹导入/需要的任何其他文件呢,例如/seed、/config、/i18n、/shared?您可以创建一个名为root
的符号链接,指向项目的根目录,并将其放在node_modules目录或其他目录下。然后您可以require('root/seed/bar')
。您需要在项目的postinstall
npm脚本期间创建此符号链接。是否要在开发过程中从根目录引用依赖项?由于webpack创建了一个monolith包,因此在clientYes上没有问题,但在客户端和服务器上都没有问题。i、 e.在某些情况下,我有客户端和服务器都使用的文件,它们之间有相对路径的依赖关系。您可以创建一个符号链接,指向您的src
目录,并将其放在node\u modules
目录中:ln-fs../src node\u modules/
。然后您可以require('src/bar')
。这仅限于node_modules文件夹中的项目,那么我想从根目录中的其他文件夹导入/需要的任何其他文件呢,例如/seed、/config、/i18n、/shared?您可以创建一个名为root
的符号链接,指向项目的根目录,并将其放在node_modules目录或其他目录下。然后您可以require('root/seed/bar')
。您将希望在项目的postinstall
npm脚本期间创建此符号链接。在需要安装新软件包之前,此操作一直有效。除非我遗漏了什么,否则npm会出错。编辑:这仅适用于Yarnis works,直到您需要安装新软件包。除非我遗漏了什么,否则npm会出错。编辑:这只适用于纱线