有一些小事但它让我烦恼。如果要使用节点模块,则必须手动安装它,需要它并将其添加到package.json中。如果你不想使用它,那就是倒退了。
是否有一个工具可以安装/删除node_modules&在需要模块后自动添加/删除package.json。
如果不是以后就必须存在这种简单的事情。
答案 0 :(得分:3)
这是一个非常有趣的问题。我找不到解决方案所以我自己写了一个小脚本。想象一下,您的主文件包含以下内容。
index.js:
var colors = require('colors');
console.log('this comes from my main file');
如果您没有安装colors
并运行node index.js
,则会收到错误Error: Cannot find module 'colors'
。
要使这项工作创建另一个module.js
文件,您将运行该文件而不是index.js
文件。
module.js:
var exec = require('child_process').exec;
try {
// require your main file here
require('./index');
} catch(e) {
if (e.code === 'MODULE_NOT_FOUND') {
var message = e.message;
console.log(message);
var module = message.match(/\'([a-z]+)\'/)[1];
console.log('Installing ' + module + ' ...');
exec('npm install ' + module + ' --save', function(error, stdout, stderr) {
if (error) console.log(error);
console.log(JSON.stringify(stdout).replace(/\\n/g, "") + ' successfully installed');
});
}
}
现在运行node module.js
,您将获得以下内容
Cannot find module 'colors'
Installing colors ...
"colors@0.6.0-1 node_modules/colors" successfully installed
如果再次运行node module.js
,您将获得
this comes from my main file // this is what you want
和colors
已添加到您的package.json
文件中。您可以在每个项目中重复使用module.js
,只需更改require
函数即可获取正确的文件。
答案 1 :(得分:1)
npm可以使用--save
标志:npm install [package] --save
或npm install [package] --save-dev
来执行devDependencies。查看npm安装文档:https://npmjs.org/doc/install.html
答案 2 :(得分:1)
我不知道在修改源代码时会自动安装软件包的任何工具。如果你真的想要它,不应该那么难:)
正如凯尔所说,--save
可以满足您的需求。还有npm shrinkwrap
可以拍摄node_modules
的快照,并更新它为您管理的文件。只需将该文件检入git,然后如果部署到Heroku(或使用npm install
的任何其他地方),它将使用该文件而不是package.json
文件作为依赖项。