改善express.js模块的使用

有一些小东西,但它让我很烦恼。 当你想使用一个节点模块时,你必须手动安装它,需要它并将其添加到package.json中。 如果你不想使用它,那倒是一回事。

是否有一个工具,安装/删除/从node_modules&添加/删除/从package.json自动后需要模块。

这是简单的,如果不是,现在必须存在。

这是一个非常有趣的问题。 我找不到解决scheme,所以我自己写了一个小脚本。 想象一下,你有你的主文件以下内容。

index.js:

var colors = require('colors'); console.log('this comes from my main file'); 

如果你没有安装colors并运行node index.js你会得到错误Error: Cannot find module 'colors'

为了使这个工作创build另一个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(/\'([az]+)\'/)[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函数即可获取正确的文件。

npm可以用--save标志来完成: npm install [package] --save或者npm install [package] --save-dev devDependencies。 查看npm安装文档: https ://npmjs.org/doc/install.html

我不知道任何在修改源代码时会自动安装软件包的工具。 如果你真的想要,不应该很难做:)

正如凯尔所说,保存可以为你想要的。 还有npm shrinkwrap node_modules会为你的node_modules一个快照并更新它为你pipe理的文件。 只需将该文件检入到git中,然后如果将其部署到Heroku(或使用npm install任何其他位置),则将使用该文件而不是package.json文件进行依赖性检查。