如何解决vaadin-maven-plugin npm 注册表配置
就上下文而言,我正在运行一个无法直接访问 Internet 的 jenkins 构建。我们与 maven、nodejs 和 npm 的代理存储库建立了联系。
我使用推荐的 frontend-maven-plugin 下载和安装 node 和 npm。这一步工作正常。之后 vaadin-maven-plugin 与 prepare-frontend
和 build-frontend
目标一起使用。
显然,这会触发实际的 npm install
,所以我需要它来联系私有 npm 注册表,但我找不到任何设置来指定它。我确实在 vaadin-maven-plugin 配置中找到了一个 npmRegistryURL
变量,但显然这并没有用于 build-frontend
目标。
我的 pom 设置如下所示:
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
<configuration>
<nodeVersion>v12.13.0</nodeVersion>
<nodeDownloadRoot>https://nexusrepo.com/repository/nodejs/</nodeDownloadRoot>
<npmDownloadRoot>https://nexusrepo.com/repository/npmjs/</npmDownloadRoot>
</configuration>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<executions>
<execution>
<id>prep</id>
<goals>
<goal>prepare-frontend</goal>
<goal>build-frontend</goal>
</goals>
</execution>
</executions>
<configuration>
<npmRegistryURL>https://nexusrepo.com/repository/npmjs/</npmRegistryURL>
</configuration>
</plugin>
</plugins>
</build>
我也尝试让 frontend-maven-plugin 处理 npm install
但这不起作用,因为 vaadin-maven-plugin 手动向 { {1}} 个文件夹。
所以我得到了与 Vaadin issue 10306
node_modules/@vaadin
我还尝试将 Error: Cannot find module '@vaadin/stats-plugin'
文件添加到我的项目的根目录以指定 npm 注册表,但这没有任何效果。这应该有效还是根本没有被 vaadin-maven-plugin 检查?
不胜感激。我无法使用 .npmrc
手动配置节点安装,因为它不是静态节点安装,因此需要在实际的 maven 构建中进行配置。
解决方法
经过大量的搜索和测试,似乎有两种方法可以解决这个问题。
选项 1 是使用 npm 执行/目标配置 frontend-maven-plugin
。
默认参数是安装,但不是必须的。这样您就可以使用此执行来运行 npm config set registry
命令。
<execution>
<id>npm config</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>config set registry https://nexusrepo.com/repository/npmjs/</arguments>
</configuration>
<phase>generate-resources</phase>
</execution>
警告:根据我的经验,这会将给定的注册表保存在用户文件夹 .npmrc
文件中,这可能会影响 jenkins 上的每个 npm 构建,因为它将为默认詹金斯用户。因此,这似乎不是一个合适的解决方案。
选项 2 将 .npmrc
文件添加到项目的根目录。
我一开始尝试这样做,但没有奏效(如问题中所述)。这似乎只是在我的本地工作站上的情况,可能是因为我还实际安装了 nodejs 和 npm,并且设置在其他地方被覆盖。在 jenkins 构建期间,这按预期工作。
选项 2 似乎是更好的前进方式,所以这就是我现在所做的。仍然对缺少 vaadin-maven-plugin
文档感到恼火,但至少我让它工作了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。