1

我有一个 Artifactory 服务器(服务)。我在那里建立了一个本地存储库,用于托管 Unity 包。我想出了如何设置 Unity 包管理器可以看到的范围包。这一切都很好。我唯一的问题是工件的命令行部署。从我读到的看起来我需要使用“npm publish”来部署。当我在我拥有的 tarball 文件(包文件)上调用 npm“发布”时,它不会被上传(部署)到服务器。我必须使用 Web UI 手动上传它。命令本身不会失败 - 它会打印出文件列表、版本、名称等。并以类似这样的内容结束

<package name>@x.x.x

如果这不是您上传(部署)包的方式,那么(npm)发布命令有什么意义?在不使用 Web 界面的情况下将包上传到 Artifactory 的正确方法是什么?

顺便说一句,我从本教程开始:Medium Article。当我在本地运行发布命令时,我得到了类似的输出,所以看起来应该为我上传包,但事实并非如此。另一个注意事项:我确实使用范围包 - 我使用了 Artifactory 和该教程提供的所有说明。我在任何地方都没有错误。当我发布时没有任何反应。

有什么建议么?

编辑:这是我运行的命令:

npm publish <packagename>.x.x.x.tgz --registry http://<server>artifactory/api/npm/unity_packages/<scope>

我看到了这个线程线程,但我宁愿不使用 curl(我必须在各种机器上复制这个设置,所以更少的移动部件对我来说更好)而且它也超级旧,所以我想有一个更新/更好的方法部署。

Edit2:我还可以“npm install”我使用 Web UI 部署的包,所以我认为这不是权限问题。

Edit3:示例输出:

 npm publish --registry http://artifactory.ops.aws.somecompany.net/artifactory/api/npm/unity_packages/
npm notice 
npm notice   @com.somecompany/com.somecompany.dependencypackageproject@0.1.207
npm notice === Tarball Contents === 
npm notice 388B   DependencyPackageProject.asmdef     
npm notice 611B   Source/Floater.cs                   
npm notice 1.1kB  package_internal.json               
npm notice 1.1kB  package.json                        
npm notice 2.1kB  Material/FloaterMaterial.mat        
npm notice 166B   DependencyPackageProject.asmdef.meta
npm notice 155B   Scenes/DPP_SampleScene.unity.meta   
npm notice 243B   Source/Floater.cs.meta              
npm notice 182B   Material/FloaterMaterial.mat.meta   
npm notice 154B   Prefabs/FloaterPrefab.prefab.meta   
npm notice 172B   Material.meta                       
npm notice 158B   package_internal.json.meta          
npm notice 158B   package.json.meta                   
npm notice 172B   Prefabs.meta                        
npm notice 172B   Scenes.meta                         
npm notice 172B   Source.meta                         
npm notice 4.0kB  Prefabs/FloaterPrefab.prefab        
npm notice 10.3kB Scenes/DPP_SampleScene.unity        
npm notice === Tarball Details === 
npm notice name:          @com.somecompany/com.somecompany.dependencypackageproject
npm notice version:       0.1.207                                              
npm notice package size:  5.5 kB                                               
npm notice unpacked size: 21.4 kB                                              
npm notice shasum:        77188f8f599877d7a6a41bbcb1800057a3fe1646             
npm notice integrity:     sha512-vbtkwkiEacQl/[...]dPb8xlhO36odg==             
npm notice total files:   18                                                   
npm notice 
+ @com.somecompany/com.somecompany.dependencypackageproject@0.1.207
4

1 回答 1

2

为了使用 npm 客户端将作用域 npm 包发布到 Artifactory,您需要:

(1) 确保您的包被创建为 npm文档中描述的范围包

(2) 通过更新您的.npmrc配置文件 ,将相关的 Artifactory npm 存储库(例如 npm-local)与您正在使用的范围相关联。该文件还应包含身份验证信息。
您可以按照 Artifactory文档中的说明进行操作。您的.npmrc文件应类似于以下内容:

@drorb:registry=http://localhost:8081/artifactory/api/npm/npm-local/
//localhost:8081/artifactory/api/npm/npm-local/:_password=*********
//localhost:8081/artifactory/api/npm/npm-local/:username=drorb
//localhost:8081/artifactory/api/npm/npm-local/:email=*****@gmail.com
//localhost:8081/artifactory/api/npm/npm-local/:always-auth=true

(3) 使用 npm publish 命令,例如

npm publish craftyjs-npm-example-1.0.0.tgz  --registry http://localhost:8081/artifactory/api/npm/npm-local/

发布命令的输出应该类似于

npm notice
npm notice   @drorb/craftyjs-npm-example@1.0.0
npm notice === Tarball Contents ===
npm notice 662B package.json
npm notice 587B .npmignore
npm notice 116B README.md
npm notice 195B game.js
npm notice === Tarball Details ===
npm notice name:          @drorb/craftyjs-npm-example
npm notice version:       1.0.0
npm notice package size:  1.6 kB
npm notice unpacked size: 1.6 kB
npm notice shasum:        8ee8bdbfac6ae92fcdcdc7441793671ce59a3584
npm notice integrity:     sha512-4DA3LCwO+vuCo[...]FYPGTtxOrg6UQ==
npm notice total files:   4
npm notice
于 2020-10-12T11:40:53.947 回答