在我安装 npm 模块之前是否需要一个 package.json 文件?

Is it necessary to have a package.json file before I can install npm modules?

我基本上有一个完全空的文件夹,其中只有一个文件 test.js。我想安装几个模块,但是当我尝试执行 npm install express 之类的操作时,出现错误提示我没有 package.json 文件。

$ npm install express

> node-icu-charset-detector@0.1.3 install /Users/me/node_modules/node-icu-charset-detector
> node-gyp rebuild

  CXX(target) Release/obj.target/node-icu-charset-detector/node-icu-charset-detector.o
../node-icu-charset-detector.cpp:7:10: fatal error:
      'unicode/ucsdet.h' file not found
#include <unicode/ucsdet.h>
         ^
1 error generated.
make: *** [Release/obj.target/node-icu-charset-detector/node-icu-charset-detector.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.0.0
gyp ERR! command "/usr/local/Cellar/node/5.1.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/me/node_modules/node-icu-charset-detector
gyp ERR! node -v v5.1.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm WARN install:node-icu-charset-detector@0.1.3 node-icu-charset-detector@0.1.3 install: `node-gyp rebuild`
npm WARN install:node-icu-charset-detector@0.1.3 Exit status 1
/Users/me
├── express@4.13.3
├── UNMET PEER DEPENDENCY react@>=0.14.0 <0.15.0
└── UNMET PEER DEPENDENCY react-dom@>=0.14.0 <0.15.0

npm WARN ENOENT ENOENT: no such file or directory, open '/Users/me/package.json'
npm WARN EPEERINVALID mongoskin@1.4.13 requires a peer of mongodb@~1.4 but none was installed.
npm WARN EPEERINVALID react-router-component@0.28.0 requires a peer of react@>=0.14.0 <0.15.0 but none was installed.
npm WARN EPEERINVALID react-router-component@0.28.0 requires a peer of react-dom@>=0.14.0 <0.15.0 but none was installed.
npm WARN EPEERINVALID react-tap-event-plugin@0.2.1 requires a peer of react@^0.14.0 but none was installed.
npm WARN EPACKAGEJSON me No description
npm WARN EPACKAGEJSON me No repository field.
npm WARN EPACKAGEJSON me No README data
npm WARN EPACKAGEJSON me No license field.

不,不需要 package.json。

  1. 里面可以有多个不同的模块名 which modules 你想在点击 npm install 时安装。

  2. 您可以更好地控制模块的版本

  3. 您可以分离依赖关系和开发依赖关系等模块

为您 'npm install express' 将为您安装 express 模块。

npm install基本有三种主要形式:

  1. npm install:阅读 package.json,并将其中的所有内容安装到此目录中。
  2. npm install express:将 express 安装到此目录中。
  3. npm install --save express:安装express到这个目录,然后保存到package.json.

第二种形式不需要 package.json 存在于此处:

$ npm install express
express@4.13.3 node_modules/express
├── escape-html@1.0.2
├── array-flatten@1.1.1
...

如果您收到错误消息,则表示有其他问题。

注意:如果您使用的是作用域包 Scoped Packages 恐怕是。