vaadin-maven-plugin npm 注册表配置
vaadin-maven-plugin npm registry configuration
就上下文而言,我是 运行 无法直接访问互联网的 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 是手动的在 node_modules/@vaadin
文件夹中添加额外内容。
所以我得到了与 Vaadin issue 10306
中指定的相同的 Error: Cannot find module '@vaadin/stats-plugin'
我还尝试将 .npmrc
文件添加到我的项目的根目录以指定 npm 注册表,但这没有效果。这应该有效还是根本没有被 vaadin-maven-plugin 检查?
如果能提供一些帮助,我们将不胜感激。我无法使用 npm config set registry
手动配置节点安装,因为它不是静态节点安装,因此配置需要在实际的 maven 构建中进行。
经过大量的搜索和测试,似乎有两种方法可以解决这个问题。
选项 1 是使用 npm execution/goal 配置 frontend-maven-plugin
。
默认参数是 install,但不一定是。这样你就可以使用这个执行来 运行 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,并且设置在其他地方被覆盖了。在詹金斯构建期间,这按预期工作。
选项 2 显然是更好的前进方式,所以这就是我现在所做的。仍然对缺少 vaadin-maven-plugin
文档感到恼火,但至少我让它工作了。
就上下文而言,我是 运行 无法直接访问互联网的 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 是手动的在 node_modules/@vaadin
文件夹中添加额外内容。
所以我得到了与 Vaadin issue 10306
Error: Cannot find module '@vaadin/stats-plugin'
我还尝试将 .npmrc
文件添加到我的项目的根目录以指定 npm 注册表,但这没有效果。这应该有效还是根本没有被 vaadin-maven-plugin 检查?
如果能提供一些帮助,我们将不胜感激。我无法使用 npm config set registry
手动配置节点安装,因为它不是静态节点安装,因此配置需要在实际的 maven 构建中进行。
经过大量的搜索和测试,似乎有两种方法可以解决这个问题。
选项 1 是使用 npm execution/goal 配置 frontend-maven-plugin
。
默认参数是 install,但不一定是。这样你就可以使用这个执行来 运行 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,并且设置在其他地方被覆盖了。在詹金斯构建期间,这按预期工作。
选项 2 显然是更好的前进方式,所以这就是我现在所做的。仍然对缺少 vaadin-maven-plugin
文档感到恼火,但至少我让它工作了。