【问题标题】:When building a package, must i have a package.json file in my /src folder?构建包时,我的 /src 文件夹中必须有一个 package.json 文件吗?
【发布时间】:2019-03-17 13:04:21
【问题描述】:

我有几个包,根目录中有一个package.json 文件,/src 文件夹中有一个package.json 文件。当我构建时,它是将/src 文件复制到/dist 文件夹中。 (后来发布到 Nexus)。

我想知道这是否是正确的方法,因为在开发时,我只更改了最外面的/package.json file。这意味着 /src 文件已“弃用”。而且更新两个文件很麻烦。

我是否以“正确”的方式进行操作,我必须让两个文件保持最新吗?或者我可以只使用一个文件,即“根”文件。

package.json
src/
    index.ts
    package.json
dist/
    index.d.ts
    index.js
    package.json //from src

【问题讨论】:

  • 你指的是每个依赖模块都会有的 package.json 文件吗?或者如果有人在他们的包中使用该模块,那么 package.json 将在您生成的模块中作为依赖项?不完全确定你在问什么。
  • 根目录下有一个package.json文件,告诉npm开发时需要哪些包。 /src 文件夹中还有另一个,在发布时包含,这是有人在他们的项目中使用该包时看到的。我想知道两者是否都需要,而且在使用 npm 链接时,我似乎需要 /src 中的 package.json。
  • 是的,我不完全确定它是否是必需的,但它有助于通过 OWASP CI 插件等进行依赖跟踪,以及可能想要独立于其重新构建包的开发人员拥有等。

标签: typescript npm package.json


【解决方案1】:

您设置项目的方式有点不同寻常。通常,项目看起来像这样,在根目录下有一个 package.json

.npmignore
package.json
src/
    index.ts
dist/
    index.d.ts
    index.js

您可以从项目的根目录运行npm publish,而不是只发布dist 文件夹的内容。新文件 .npmignore 告诉 npm 什么要发布。如果您只想排除 src,您的 .npmignore 将如下所示:

src

然后在package.json 中,设置maintypings 字段告诉Node 和TS 在哪里可以找到你的代码:

{
  "main": "dist/index.js",
  "typings": "dist/index.d.ts"
  ...
}

(或者,如果您真的只想发布dist 的内容,您可以设置另一个构建步骤,将您的根package.json 复制到dist。但是发布策略我上面描述的比较典型。)

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 2017-07-11
    • 2014-08-15
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2012-12-24
    相关资源
    最近更新 更多