在不使用相对路径的情况下重用我自己的 JavaScript 模块
Reusing my own JavaScript modules without using relative paths
我是 JavaScript 开发的新手,可以就如何最好地使用我自己创建的多个模块提出一些建议。
模块 1
--src
----a.js
----b.js
模块 2
--src
----c.js
----d.js
模块 3
--src
----e.js
----f.js
模块 4
--src
----g.js
----h.js
现在每个模块都是 js 文件的集合,这些文件使用 module.exports 导出他们需要的功能。
本例中Module1和Module2是库模块。 Module2 依赖于 Module1。这两个模块都与平台无关,可以 运行 在浏览器或 nodejs 中。
Module3 是一个项目模块,它依赖于 Module2 和 Module1。它专为浏览器设计,并使用 browserify 将它们全部组合成一个包。
Module4 是另一个项目模块,它也依赖于 Module2 和 Module1。这是为了在nodejs下运行设计的
每个模块都有自己的 git 存储库。
现在我遇到的问题是 require 中的相对路径。例如 c.js 当前确实 require("../../Module1/src/a.js");同样 h.js 确实需要("../../Module2/src/c.js");
这导致文件夹结构非常痛苦,每个项目都必须以正确的设置从 git 克隆。
以下是我正在努力实现的目标。
为了取消相对路径,所以我只需要 ("ModuleX/src/foo.js");这需要与 browserify 和 nodejs 一起使用。
从 git 克隆一个项目模块并让它获得所有依赖模块(也许 git 子模块?)。不关心文件夹结构,因为这应该使用上面提到的点来解决。
克隆项目及其依赖模块后,就可以编辑这些模块中的每一个,进行更改并将它们推送到各自的 git 存储库。
我想我正在尝试做的是非常标准的。创建我自己的模块并在不同的项目中重复使用它们。我是否尝试以标准方式解决它?我读过有不同的方法可以使用 NODE_PATH 来实现这一点,节点和 browserify 都支持它,但都不鼓励它。 Browserify 支持路径选项但不适用于节点。另请阅读有关将模块放入 node_modules 中的信息,但不确定这对相对路径有何帮助。
任何建议将不胜感激
谢谢
您可能想要做的是将您的可重用代码提交到 git(这里是 GitHub),然后是 npm install <git remote url>:
。例如 npm install git+https://isaacs@github.com/npm/npm.git
。另一方面,您的回购需要一个 package.json
和一个 index.js
来保存您的代码或指向它。或者,您可以通过 main:""
键在 package.json
中定义主文件的位置。
这些项目之间的依赖关系将在各自的 package.json
中定义。安装后 npm
避免循环依赖、缓存等很神奇
完成所有操作后,如果您愿意,您可以 var x = require("ModuleX")
获得 ModuleX/src/foo.js
。
或者使用 npm
s 私有模块。
我是 JavaScript 开发的新手,可以就如何最好地使用我自己创建的多个模块提出一些建议。
模块 1 --src ----a.js ----b.js
模块 2 --src ----c.js ----d.js
模块 3 --src ----e.js ----f.js
模块 4 --src ----g.js ----h.js
现在每个模块都是 js 文件的集合,这些文件使用 module.exports 导出他们需要的功能。
本例中Module1和Module2是库模块。 Module2 依赖于 Module1。这两个模块都与平台无关,可以 运行 在浏览器或 nodejs 中。
Module3 是一个项目模块,它依赖于 Module2 和 Module1。它专为浏览器设计,并使用 browserify 将它们全部组合成一个包。
Module4 是另一个项目模块,它也依赖于 Module2 和 Module1。这是为了在nodejs下运行设计的
每个模块都有自己的 git 存储库。
现在我遇到的问题是 require 中的相对路径。例如 c.js 当前确实 require("../../Module1/src/a.js");同样 h.js 确实需要("../../Module2/src/c.js");
这导致文件夹结构非常痛苦,每个项目都必须以正确的设置从 git 克隆。
以下是我正在努力实现的目标。
为了取消相对路径,所以我只需要 ("ModuleX/src/foo.js");这需要与 browserify 和 nodejs 一起使用。
从 git 克隆一个项目模块并让它获得所有依赖模块(也许 git 子模块?)。不关心文件夹结构,因为这应该使用上面提到的点来解决。
克隆项目及其依赖模块后,就可以编辑这些模块中的每一个,进行更改并将它们推送到各自的 git 存储库。
我想我正在尝试做的是非常标准的。创建我自己的模块并在不同的项目中重复使用它们。我是否尝试以标准方式解决它?我读过有不同的方法可以使用 NODE_PATH 来实现这一点,节点和 browserify 都支持它,但都不鼓励它。 Browserify 支持路径选项但不适用于节点。另请阅读有关将模块放入 node_modules 中的信息,但不确定这对相对路径有何帮助。
任何建议将不胜感激
谢谢
您可能想要做的是将您的可重用代码提交到 git(这里是 GitHub),然后是 npm install <git remote url>:
。例如 npm install git+https://isaacs@github.com/npm/npm.git
。另一方面,您的回购需要一个 package.json
和一个 index.js
来保存您的代码或指向它。或者,您可以通过 main:""
键在 package.json
中定义主文件的位置。
这些项目之间的依赖关系将在各自的 package.json
中定义。安装后 npm
避免循环依赖、缓存等很神奇
完成所有操作后,如果您愿意,您可以 var x = require("ModuleX")
获得 ModuleX/src/foo.js
。
或者使用 npm
s 私有模块。