节点:package.json 应该在 src 文件夹中还是在父文件夹中?

ope*_*sas 5 conventions setup-project node.js npm package.json

我不知道是否有推荐的或标准的方法,但我看到了这样的例子:

my-project
  package.json
  src
    index.js
    [...]
Run Code Online (Sandbox Code Playgroud)

像这样:

my-project
  src
    package.json
    index.js
    [...]
Run Code Online (Sandbox Code Playgroud)

推荐的方法是什么?每种方法有什么优点/缺点吗?

shk*_*per 6

我想说有三个主要因素需要考虑。

1) 您通常希望将其放置package.json在运行 npm 命令的目录中,例如或snpm install中定义的任何 npm 脚本。另外,将所有模块拉入您的旁边的目录中:package.json"scripts: {..}"npm installnode_modulespackage.json

my-project
  node_modules
  package.json
  src
    index.js
    [...]
Run Code Online (Sandbox Code Playgroud)

当然,您总是可以cd先进入目录,或者使用--prefixflag,但为什么会让生活变得更困难呢?

2) 当require()你的文件中有第三方模块时.js,node.js 会在最近的目录中查找它node_modules,从当前目录开始一直向上,直到找到为止。这篇文章很好地解释了这一点。您可以使用此逻辑来隔离对不同上下文的依赖关系,例如src/和,但对于您正在处理的整个项目来说,test/拥有一个共同点通常更有意义。node_modules

3) 如果您打算发布包,则必须将package.json必要的元数据放置到该包的根目录中。package.json当有人稍后安装你的包时,npm 会期望在其根目录中看到。


Pra*_*kar 4

它应该位于项目的根目录中。

my-project
  package.json
  src
    index.js
    [...]
Run Code Online (Sandbox Code Playgroud)

如果你这样做,npm init 它将放入项目的根目录