小编tob*_*obi的帖子

为本地开发和 CI 设置私有 npm 注册表身份验证的最佳实践是什么?

我想知道是否有一个通用的最佳实践来为本地开发设置私有 npm 注册表身份验证,该身份验证也适用于 CI(反之亦然)。

这是我目前的理解:

对于本地开发:运行npm login该命令将创建访问令牌、创建~/.npmrc文件并将访问令牌写入该文件,如下所示:

@my-scope:registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=my-auth-token
Run Code Online (Sandbox Code Playgroud)

在我的项目中,我有这个.npmrc文件(在 旁边package.json):

@my-scope:registry=https://registry.npmjs.org/
//registry.npmjs.org/:always-auth=true
Run Code Online (Sandbox Code Playgroud)

这看起来效果很好。我可以安装我的私有软件包,因为 npm 似乎会获取注册表的用户级身份验证设置。

对于 CI: NPM 文档建议将以下内容添加到项目级别.npmrc以在 CI 中注入身份验证:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会覆盖我机器上的用户级配置。.npmrc文件具有以下优先级(从最高到最低):项目级、用户级、全局、npm 内置。npm CLI 现在尝试使用 NPM_TOKEN 环境变量进行身份验证,除非我在本地计算机上显式导出它,否则这显然不起作用。

也许我错过了一些明显的东西。如果没有,我很好奇是否有任何常见的最佳实践来处理这个问题?当访问令牌已经在用户级别配置时,要求每个员工导出其计算机上的访问令牌.npmrc似乎不是一个很好的解决方案。

或者,人们可以根本不关心用户级配置(或 npm 登录),而是直接在每个员工的本地计算机上将访问令牌导出为 NPM_TOKEN。但正如前面提到的,我认为这不是一个很好的解决方案。我想象一个标准解决方案(如用户级配置文件),每个员工都可以在其中设置公司的私人注册表。

npm npm-registry

9
推荐指数
1
解决办法
5089
查看次数

为什么依赖在Webpack工件中重复多次?

我有一个多入口点webpack构建,我正在努力优化生产的工件大小.webpack-bundle-analyzer产生了以下图片:

在此输入图像描述

很明显,AtlasKit依赖项构成了总工件大小的很大一部分.具体来说,我看到这种styled-components.es.js情况重复了很多次.更重要的是,同样的依赖性也存在于vendor.js其中所有其他包之间共享.

任何人都可以解释为什么styled-components.es.js重复全部以及为什么它不能通过单一依赖共享vendor.js?我有什么办法可以删除重复项并且只依赖于单个styled-components.es.js依赖项vendor.js吗?

我发现AtlasKit依赖项有一个node_modules包含在包中的嵌套文件夹有点奇怪.为什么dist还不够?也许这是为什么styled-components.es.js不能通过共享的部分原因vendor.js

在此输入图像描述

我试图通过webpack的IgnorePlugin(类似于moment.jslocales)手动排除依赖,但到目前为止失败了.

任何见解将不胜感激.谢谢!

javascript webpack styled-components atlaskit

5
推荐指数
1
解决办法
470
查看次数