Nic*_*tte 9 php dependency-management autoloader node.js npm
我正在慢慢地从 PHP 过渡到 Node.js,并试图找到类似于composer dumpautoload. 多亏了PSR-4,当use在每个文件的开头使用带有简单语句的命令时,可以很容易地访问 PHP 中任何文件中的任何类。
npm似乎在管理包和依赖项方面做得很好,但是在您自己的项目中具有相同的灵活性将避免创建require在文件更改路径时很容易中断的语句。
我要查找的示例 - 同一文件夹中的 2 个文件:
一些 testClass.js(类文件)
var testClass = {
sayHello: function () {
console.log('this is a test');
}
};
module.exports = testClass ;
Run Code Online (Sandbox Code Playgroud)
通常这是您将放在另一个文件 index.js 文件中的内容:
var testClass = require('./testClass');
testClass.sayHello();
Run Code Online (Sandbox Code Playgroud)
但是想象一下,您可以使用一些应用程序或命令(例如 PHPcomposer dumpautoload并简单地运行以下命令)为所有类预先编制索引:
var testClass = require('testClass');
testClass.sayHello();
Run Code Online (Sandbox Code Playgroud)
我找不到任何似乎可以实现这一目标的解决方案。
我错过了什么?
2020年12月编辑
Yarn2 确实发布了一个名为 Plug'n'Play 的功能,它似乎模仿了 PHP 的自动加载器:https ://yarnpkg.com/features/pnp
已知某些软件包存在问题,但我没有亲自测试过。
简短的回答是:不
有关更多详细信息,请继续阅读:
当前的方式require或import当前的工作有两个主要挑战:
虽然 PHP 似乎已经开发了自己的标准并且有点自成一格,但即使有人开发了等效的解决方案来为 Node.js/JavaScript 实现相同的目标,我们仍然需要良好的 IDE 支持。为了获得良好的 IDE 支持,这种类型的更改将:
require或import变化,可以支持绝对路径)有几个答案在这里(https://gist.github.com/branneman/8048520),他们似乎都打破IDE支持(我只用WebStorm测试):
require以支持/:重命名/重构时中断 IDE 支持。总的来说,考虑到 IDE 支持优先于代码可读性,如果没有社区支持这种更改,似乎没有好的方法可以使用 Node.js 实现对当前依赖项管理的更改。