我有问题npm install
。我想安装我的项目中使用的所有依赖项。在package.json
那里没有任何依赖项,但是在我的项目文件中,例如我const mongo=require('mongoose')
在另一个文件中const morgan=require('morgan')
等等。
我知道在输入时npm i --save <dependency_name>
它会更新我的package.json
. 但是我想安装所有依赖项,而无需在任何地方明确键入它们的名称。
有什么方法可以安装整个项目中使用的所有依赖项,但在package.json
.
它并不是要先编写您的程序代码,然后让 NPM 找到所有使用的依赖项。这是因为一个简单的原因:在您可以使用外部库/包之前,您必须先下载它,否则您根本无法使用它。
现在,我只看到您的用例的两个原因:
package.json
,或者无论如何,您的问题会有一些解决方案:
讨厌的解决方案:运行npm start
并查看您收到什么错误消息。将找不到所有已卸载的依赖项,因此您将看到包名称并可以将它们手动添加到package.json
. 这会变得很糟糕,因为您每次都必须重新运行程序。为避免这种情况,您可以查看Nodemon,它会自动重新启动您的程序。
更好的解决方案:打开您喜欢的 Web IDE 并使用“全局搜索”功能查找所有出现的 string require(
,或作为 Regex: require\((.+)\)
。这将列出程序文件中的所有依赖项导入。如果还应该有 ECMA 6 导入,还可以搜索import (.+) from (.+)
. - 但是,您仍然需要手动将所有文件中的所有依赖项名称复制并粘贴到您的package.json
文件中。
最好但最复杂的解决方案:编写一个 Node.js 脚本,从项目根目录开始,递归扫描所有文件。创建一个依赖内存变量,比如let dependencies = []
. 读取所有*.js
文件(同步或异步),每次匹配require
orimport
语句时,检查依赖项是否已经在您的dependencies
数组中。如果没有,请推它。最后,您的所有项目依赖项都将列在dependencies
数组中,您可以将它们复制并粘贴到您的package.json
.
伪 Node.js 代码:
const lineReader = require('line-reader');
let dependencies = [];
const regex = /require\(['|"](.+)['|"]\)/g;
lineReader.eachLine('/path/to/file', function(line) {
const match = regex.exec(line);
if(match) {
if(dependencies.indexOf(match[1]) === -1) {
dependencies.push(match[1]);
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句