npm在当前目录下安装模块
当我运行:
npm install my-app
该应用程序安装到node_modules / my-app / …
我也试过了
npm install -g my-app
但是这也行不通。
我怎样才能将模块直接安装到当前目录?
npm install
安装包安装在两个位置之一 :
-
./node_modules/packagename/
– 换句话说,它会在当前目录中创build一个名为node_modules
的文件夹,并为您在该文件夹中安装的每个包创build一个文件夹。 (除非在父文件夹中有一个node_modules
,那么它使用它。) - 或者,如果使用
-g
(全局)选项,则软件包将安装在/usr/local/lib/node_modules/packagename
。
只有当你想要用作命令的包时,才使用-g
。
就像全局variables如何是严重的,但在某些情况下也是必要的一样,全局包是非常重要的,但如果不需要,最好避免。
一般来说,经验法则是:
- 如果您正在安装您要在程序中使用的东西,请使用
require('whatever')
,然后将其安装到您的项目的根目录。- 如果你正在安装你想在你的shell中使用的东西,在命令行或者其他地方安装,那么它的二进制文件就会在你的
PATH
环境variables中。
npm不会将包的文件直接安装到当前目录中。
但是,这实际上是一件好事。 它使依赖关系的文件与应用程序分开, 当你require
某些东西时 , Node会自动searchnode_modules
文件夹 。
正如@dalu所说,如果你想拥有本地软件包,你需要一个package.json
文件。
但是要创buildpackage.json
文件,必须通过运行npm init
来初始化npm 。
然后你可以使用npm install <module_name> --save[-dev]
。
你应该在当前目录下有一个package.json
。
然后编写npm install <module_name> --save-dev
或npm install <module_name> --save
,它将安装到node_modules目录
这是如何将模块安装到当前目录中的:
npm i --prefix ./ my-app
正如其他人所说,正确的方法是通过package.json
来configuration你的项目
我想真正的问题,我和OP会想要的是安装我的应用程序,就像你会安装一个应用程序,即安装一个顶级应用程序,我将“使用”作为一个应用程序,而不是“要求“作为一个模块。
npm从我的应用程序目录安装了一个级别的事实,是新npm用户纯粹的审美反对意见。
当我开始使用npm(不久前),我通过一个git项目作为安装程序来解决它,克隆git,运行安装脚本,但现在我已经习惯了它,它并没有打扰我有应用程序在“错误的”文件夹中。
只要在正确的地方和你的用户设置一些.sh,.bat或捷径,就不会注意到了。