首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Node.js包发布到NPM以外

将Node.js包发布到NPM以外
EN

Stack Overflow用户
提问于 2018-01-28 06:09:25
回答 2查看 160关注 0票数 1

我已经使用Node.js几年了,但只用于小型的独立项目。

最近,我一直在研究如何创建包并将其包含到更大的项目中(“需求”)。据我所知,这些软件包要么是本地的(项目的一部分),要么是在NPM网站上发布的。

但是,如果我创建了一个自包含的包,并且不想将它发布到NPM,因为它包含专有代码,那么我无法理解如何正确地创建、管理和发布(到内部服务器)这样的包。

在过去的十年中,我一直使用Java和Maven,这个堆栈对我来说非常好。您可以将模块/lib打包到JAR文件中,然后将它们发布到本地服务器(即Artifactory、Nexus或其他服务器)。当DEV“需要”一个依赖/包时,它会搜索我们的本地存储库管理器,如果没有在这个级别上找到,请查看Maven中央存储库(在internet上)。效果非常好。

我们将如何对Node.js +包+ NPM进行同样的处理?我已经搜索过了,但发现那里的信息非常有限。

任何链接到教程,文章或任何东西,将不胜感激。

更新: 2018.01.29 14:45

我发现这篇文献似乎表明你可以运行你自己的NPM注册中心!!我能办我自己的私人合唱团吗?

另外,我在“package.json”的依赖项部分上发现了以下有趣的内容,它显示了:

代码语言:javascript
运行
复制
{ "dependencies" :
  { "foo" : "1.0.0 - 2.9999.9999"
  , "bar" : ">=1.0.2 <2.1.2"
  , "baz" : ">1.0.2 <=2.3.4"
  , "boo" : "2.0.1"
  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
  , "asd" : "http://asdf.com/asdf.tar.gz"
  , "til" : "~1.2"
  , "elf" : "~1.2.3"
  , "two" : "2.x"
  , "thr" : "3.3.x"
  , "lat" : "latest"
  , "dyl" : "file:../dyl"
  }
}

其中,以下是有趣的。

代码语言:javascript
运行
复制
"asd" : "http://asdf.com/asdf.tar.gz"

可能表示您可以从自己的服务器中提取包。我一定会试着回去报告的。

更新: 2018.01.30 16:17

好的,虽然我非常确信您实际上可以将NPM配置为在本地或在您自己的注册中心(服务器)上有选择地发布,但我对以下内容相当满意:

首先,创建单个NPM包(即:npm init)并实现它。

其次,用npm version 1.2.3设置您的版本。在添加和维护代码时,您将使用npm version majornpm version minornpm version patch之一来调整版本。

第三,当准备发布时,从内部调用npm pack包。这将创建一个压缩tarball (tgz)文件(即:foo-bar-1.2.3.tgz). )。

第四,您现在可以独立地管理这些文件,比如将它们复制到您自己的服务器,甚至是存储库管理器(如Artifactory )。

第五,当您需要您的私有包时,在每个项目中,如果您手动下载了包或npm install --save foo-bar-1.2.3.4.tgz,只需键入npm install --save https://repo-server.com/some/path/foo-bar即可。下载哪个版本将取决于您在哪个环境中工作(开发、测试、阶段或prod)。或者您甚至可以在URL中强制使用版本号(您的存储库服务器应该支持各种API调用)。

通过安装私有包,NPM应该自动下载和安装所有依赖项。我说“应该”,因为我还没有证实这一点。

EN

回答 2

Stack Overflow用户

发布于 2018-01-28 06:25:01

也许您能做的是在GitHub上发布它,在您的package.json中可以直接从存储库调用如下所示:

代码语言:javascript
运行
复制
"dependencies": {
  "mongoose-cipher": "git+ssh://git@github.com:estrada9166/mongoose-
  cipher.git"
}

代码语言:javascript
运行
复制
"dependencies": {
  "mongoose-cipher": "git+https://git@github.com:estrada9166/mongoose-
  cipher.git"
}

此外,如果您的存储库有一个版本,您可以指定发行版,如下所示:

代码语言:javascript
运行
复制
"dependencies": {
  "mongoose-cipher": "git+ssh://git@github.com:estrada9166/mongoose-
  cipher.git#v0.0.7"
}

您可以使用您的包创建私有存储库,通过这种方式它是安全的!

票数 3
EN

Stack Overflow用户

发布于 2018-07-11 19:49:28

专用存储库:

如果您希望托管您的私有包(也是代理请求到npmjs.org ),您可以使用以下两种方法之一:

NexusOSS3.x的优点是它是一个通用的存储库(即支持npm、maven等)。

自给包:

正如您已经提到的,npm pack生成tarball,它可以直接包含在其他包的依赖项中。但是,您还可以使用bundledProperties of package.json创建包含所有依赖项的tarball。这样,您就不需要在提取tarball时调用npm install。使用此方法的唯一警告是,如果开发和生产机器具有不同的体系结构,则本机模块可能无法工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48483686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档