Vaadin 14.2和16已更改为现在在Maven驱动的项目中自动包含必需的 npm 工具。无需手动安装 Node.js & npm 。
引用此博客文章:
自动安装Node.js
从版本14.2和16开始,Node.js安装(包括npm)自动进行。它安装
.vaadin
在主文件夹内的文件夹中,并从那里重新用于所有Vaadin项目。和以前一样,Node仅用于构建事物的前端。部署生产后它不会运行!
进一步的改进: pnpm 代替 npm 。
可行的前端依赖关系管理-
pnpm从14.0开始,在后台,npm被用于管理前端依赖关系。现在,我们增加了对pnpm的支持,它引入了以下好处:1.
与本地计算机和CI系统上的npm相比,构建时间更短,因为pnpm只下载一次软件包并从本地缓存中重新使用它们。
- 在项目中更新Vaadin版本时,无需删除package.json,锁定文件或node_modules文件夹。
在14.2中,默认情况下仍使用npm,但我们建议您测试pnpm并提供您的反馈。尝试pnpm很容易:无需迁移,只需使用配置属性或Maven插件配置启用它。您可以在此处了解有关pnpm的更多信息。Vaadin 16将默认使用pnpm。
我已经验证了此方法的效果。现在,我已经从Mac上手动删除了Node.js / npm安装。
该Vaadin
14团队期望你有Node.js的和NPM安装在计算机上的工具。
或者,Vaadin 14 似乎 正在与Node.js / npm一起使用,通过frontend-maven-
您可以在MavenPOM文件中指定的工具将其自动安装在项目中(而不是在计算机上全局安装)。有关您的POM,请参见下面的XML代码段。
plugin
如果您想在计算机上全局安装Mode /
npm,请确保阅读另一本 Tom
Tomosad的Answer。
从Vaadin 14开始,Vaadin团队正在切换:
…作为它们从聚合物 2
过渡到聚合物3的一部分。
请参阅 Vaadin 14+中的
博客文章 Bower和npm 。
希望,作为Java上Vaadin的用户,我们不需要关心这些底层技术细节……但是,有一件事:不幸的是, 默认情况下 在您的Vaadin项目中。
您有两种解决方案:
我更喜欢后者。而且我更喜欢让Maven在我的项目中自动安装它们,而让我减少手动管理的工作量。
我不知道我的node / npm-per-project解决方案的局限性或影响。我几乎不知道节点/
npm的目的或性质,也不知道Vaadin如何利用它们。因此,使用此解决方案需要您自担风险。我只能说这似乎对我有用。
frontend-maven-plugin
到您的项目frontend-maven-plugin
Maven可以使用该工具在Vaadin项目中使用npm下载和安装Node.js。
在您的Vaadin项目中打开Maven POM文件。
在该
POM 的元素内添加以下块。
当然,您可以调整该代码段以使用最新的版本号。检查Node.js的页面的最新版本号。
注意npm
,由于该工具与最新版本的Node.js捆绑在一起,因此我们已注释掉该项目。
其余步骤:
Maven
IntelliJ 的面板中,运行Lifecycle
名为clean
和的项目install
。请稍等一下,下载并配置了更多项目。(请注意控制台历史记录中的“安装节点版本v10.16.3”项。)Plugins
>区域中jetty
,运行该jetty:run
项目。等待Jetty服务器启动以运行Vaadin应用程序,请稍等。在控制台上,您应该看到类似以下的信息(所有Vaadin的发行版都常年出现这种神秘的Quiet
警告):
Time
[INFO] Started Jetty Server
[INFO] Using Non-Native Java sun.nio.fs.PollingWatchService
[WARNING] Quiet Time is too low for non-native WatchService [sun.nio.fs.PollingWatchService]: 1000 <5000 ms (defaulting to 5000 ms)
http://localhost:8080/
在您的应用成功运行时,看到“单击我”按钮。该解决方案来自Maven插件的项目页面frontend-maven-
。请注意,示例POM片段存在错误,无法将
plugin
标签包装在多个
标签中。我在那里提交了#838票。
您可能需要在Vaadin论坛中关注此讨论。
供您参考,这是一个完整的POM文件,可以与您进行比较。
${project.basedir}/drivers/driver
${project.basedir}/drivers/driver_zips
${project.basedir}/drivers.xml