【问题标题】:Setup Private NPM feed and publish Packages设置私有 NPM 提要和发布包
【发布时间】:2021-03-26 23:32:29
【问题描述】:

我为 NPM 设置了 Azure DevOps 工件源。
我按照https://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-npm?view=azure-devops&tabs=windows上的说明进行操作

在下一步中,我想从 Visual Studio 项目中的“node_modules”目录发布包,该项目的包来自公共源。

我想如果我在我的自定义“.npmrc”和“package.json”文件旁边运行“npm publish”,它会从“node_modules”目录发布我的所有库。相反,它发布了我的 VisualStudio 项目,它使用了这些库。它甚至遵循 Git Ignore 规则,不包含“node_modules”文件夹……

发布我所依赖的包的默认方式是什么?
我必须为每个包手动编写脚本吗?

对于需要预构建的软件包,我该怎么办?
在我运行了一个简单的脚本后,几个包失败了。

脚本:

for /d %i in (C:\Path\node_modules\*) do ( cd "%i" &  npm publish )

错误:

…
6 warn prepublish-on-install As of npm@5, `prepublish` scripts are deprecated.
7 warn prepublish-on-install Use `prepare` for build steps and `prepublishOnly` for upload-only.
8 warn prepublish-on-install See the deprecation note in `npm help scripts` for more information.
…
23 error code ELIFECYCLE
24 error errno 1
25 error xml-name-validator@3.0.0 prepublish: `node scripts/generate-grammar.js < lib/grammar.pegjs > lib/generated-parser.js`
25 error Exit status 1
26 error Failed at the xml-name-validator@3.0.0 prepublish script.
…

我看到这些包都有自己的子包:/

PS:我的 DevOps 服务器和工作站无法直接访问公共网络!

感谢您的帮助!

【问题讨论】:

    标签: node.js azure npm


    【解决方案1】:

    发布我依赖的包的默认方式是什么?

    您不会重新发布项目的所有依赖项(= 其他人已经发布的模块),而是让模块的用户通过将项目安装为依赖项来自动加载它们。

    我必须为每个包手动编写脚本吗?

    同样,您不会发布其他人的包。 您可以使用像 Parcel、Rollup 或 Webpack 这样的 bundler 将所有依赖项的构建代码包含在您自己的构建工件中,因此它不再具有外部依赖项。为了告诉你的模块的用户这个事实,你还必须调整项目的package.json(即依赖项变为devDependencies),你还应该注意许可证(其中一些要求你在你的工件中包含合法的标题,您以自己的名义发布其他人的作品)。 此外,您打破了生态系统的模块化,因此不要期望整体效率。

    PS:我的 DevOps 服务器和工作站无法直接访问公共网络!

    我不知道在您发帖时这是否已经可行: 在 Azure 源中,您可以定义上游来源。 因此,您的 Feed 将为 npmjs.org 提供代理(并缓存...),您的项目的依赖项将在其中发布/托管(无需直接访问公共网络,因为您将通过 Feed 从 npmjs.org 下载)。

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 2021-01-29
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2011-12-25
      相关资源
      最近更新 更多