我决定尝试学习 DerbyJS,这也是我第一次接触 NodeJS。
我使用derby new foo
. 这也会创建一个node_modules/
文件夹,其中包含项目所依赖的所有包的副本。
空白 Derby 项目的node_modules/
子目录大小为 144 MB,包含 12967 个文件(原文如此!)。作为一个熟悉 Ruby 的 RubyGems、RVM 和 Bundler 的人,我觉得这很疯狂。我无法表达这是多么错误(实际上我有一些可靠的论据来反对这种疯狂,但 StackOverflow 不是辩论的地方)。
我认为 npm 的-g
标志会帮助我。我告诉自己,我可以在全球范围内安装所有软件包。所以我做了:
derby new -n foo
cd foo
sudo npm install -g
现在我的项目重 152 KB,包含 24 个文件。现在这是合理的。
但我无法运行它。当我这样做时npm start
,我得到“找不到模块'express'”:
lolmaus@sandy:~/hello_derby2$ npm start
> hello_derby2@0.0.0 start /home/lolmaus/hello_derby2
> node server.js
Master pid 29884
module.js:340
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/lolmaus/hello_derby2/lib/server/index.js:1:77)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
所以问题是:如何将项目的依赖项安装到中央本地存储库中并运行项目,而不会从我的 Dropbox 帐户中删除 f#@k?