有一些小东西,但它让我很烦。当您想使用节点模块时,您必须手动安装它,需要它并将其添加到 package.json 中。如果你不想使用它,倒过来也是一样的。
是否有一个工具可以在需要模块后自动安装/删除到 node_modules 并从 package.json 添加/删除。
如果现在以后不存在,那么它必须存在。
有一些小东西,但它让我很烦。当您想使用节点模块时,您必须手动安装它,需要它并将其添加到 package.json 中。如果你不想使用它,倒过来也是一样的。
是否有一个工具可以在需要模块后自动安装/删除到 node_modules 并从 package.json 添加/删除。
如果现在以后不存在,那么它必须存在。
这是一个相当有趣的问题。我找不到解决方案,所以我自己写了一个小脚本。想象一下,您的主文件包含以下内容。
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
文件。
模块.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
函数即可获得正确的文件。
我不知道有任何工具会在您修改源代码时自动安装包。如果你真的想要的话,应该不会那么难做:)
正如凯尔所说,--save
可以为你想要的。还有npm shrinkwrap
一个会为您拍摄快照node_modules
并更新它为您管理的文件。只需将该文件检入 git,然后如果您部署到 Heroku(或其他任何npm install
使用package.json
.
npm 可以使用--save
flag:npm install [package] --save
或npm install [package] --save-dev
用于 devDependencies 来完成。查看 npm 安装文档:https ://npmjs.org/doc/install.html