Java War文件部署和一系列npm包

Java War文件部署和一系列npm包,java,node.js,npm,war,Java,Node.js,Npm,War,我正在Eclipse中处理一个动态web项目,并计划使用Angular/Durandal/Aurelia风格的框架开发一个Java JAX-RS RESTful后端和一个JavaScript单页应用程序前端。话虽如此,在Java世界中部署的典型方式是将东西打包成WAR文件——本质上是一个JAR文件。问题是,包括node_模块会大大增加WAR文件的大小。另一方面,我可以在部署后执行“npm安装”。然而,在我不断部署的开发机器上,这将花费太多时间。我希望我能在web服务器上准备带有“npm安装”模块

我正在Eclipse中处理一个动态web项目,并计划使用Angular/Durandal/Aurelia风格的框架开发一个Java JAX-RS RESTful后端和一个JavaScript单页应用程序前端。话虽如此,在Java世界中部署的典型方式是将东西打包成WAR文件——本质上是一个JAR文件。问题是,包括node_模块会大大增加WAR文件的大小。另一方面,我可以在部署后执行“npm安装”。然而,在我不断部署的开发机器上,这将花费太多时间。我希望我能在web服务器上准备带有“npm安装”模块的安装目录,然后在上面部署WAR文件。问题是,如果文件夹不包含在WAR文件中,WAR文件部署似乎喜欢清除这些文件夹

我正在使用GlassFish 4.1应用服务器。对我来说,理想的解决方案是通过修改MANIFEST.MF文件来“隐藏”WAR文件中的目录,这样当它展开时,隐藏的目录就不会被覆盖。这将是解决我的问题最节省的办法。但是,据我所知,JAR/WAR文件清单中没有隐藏清单条目

使用“npm link”命令也可能会得到创造性的解决方案。欢迎提出任何建议

也许这也说明了为什么一旦人们开始在客户端使用npm,他们就会开始在服务器端使用node和express。但是,我不认为它们不能很好地结合在一起,我希望保留所有老式开源Java库的选择权

如果您使用的是像Grunt这样的nodejs构建工具(但可能不是),那么可能是devdependency占用了太多空间。如果是这样,只需将运行时依赖项从node_模块中复制出来即可

如果不是:你不必部署战争;您还可以部署“分解”目录。您可以只复制更改的文件,如果您使用的是像Grunt这样的nodejs构建工具(但可能不是),那么可能是devdependency占用了太多空间。如果是这样,只需将运行时依赖项从node_模块中复制出来即可


如果不是:你不必部署战争;您还可以部署“分解”目录。你可以只复制更改过的文件,我知道这个问题已经问了将近两年了,但也许有人仍然需要答案

简单地说,您需要绑定JavaScript。您不应该在war中包装node_modules文件夹,甚至不应该将其按原样部署到服务器。主要是因为你的问题。是。。。不是最小的

在前端开发中,您需要使用一个工具,如将所有JS文件收集到一个app.JS文件中。此过程只会将直接
需要的实际文件
导入的实际文件
放入您自己的JavaScript中(以及这些文件
需要的文件
,等等),而不包括所有其他文件。对于本次讨论来说,最重要的是,省去所有的
devdependency

Webpack还将打包js以外的文件。导入css文件将告诉webpack也将这些文件捆绑起来,在app.js旁边创建app.css文件(尽管您需要使用适当的方法告诉webpack导入main.css意味着什么)

入门是一件相当简单的事情,向项目中添加一个配置文件,添加一个新的devDependency,并找出如何让基于Java的构建工具触发bundler。例如,或


如今,webpack和它的同类产品更加智能。如果您的node_模块包含ES6本机模块,绑定器可以对这些文件执行绑定,以仅绑定实际导入的导出。这将进一步减小捆绑包的大小


他们还可以将捆绑包的一部分提取到一个单独的文件中,以便创建一个包含Angular、jQuery等代码的vendor.js文件。或者,您可以告诉捆绑包商将这些导入视为外部导入,这意味着假定它们已包含在web应用程序的其他位置。但这一切都是进入比你一开始需要的更高级的功能。试一试《webpack指南》,看看它会立即改变你的战争规模,然后从那里开始。

我知道这个问题已经问了将近两年了,但也许还有人需要答案

简单地说,您需要绑定JavaScript。您不应该在war中包装node_modules文件夹,甚至不应该将其按原样部署到服务器。主要是因为你的问题。是。。。不是最小的

在前端开发中,您需要使用一个工具,如将所有JS文件收集到一个app.JS文件中。此过程只会将直接
需要的实际文件
导入的实际文件
放入您自己的JavaScript中(以及这些文件
需要的文件
,等等),而不包括所有其他文件。对于本次讨论来说,最重要的是,省去所有的
devdependency

Webpack还将打包js以外的文件。导入css文件将告诉webpack也将这些文件捆绑起来,在app.js旁边创建app.css文件(尽管您需要使用适当的方法告诉webpack导入main.css意味着什么)

入门是一件相当简单的事情,向项目中添加一个配置文件,添加一个新的devDependency,并找出如何让基于Java的构建工具触发bundler。例如,或


如今,webpack和它的同类产品更加智能。如果您的node_模块包含ES6本机模块,绑定器可以对这些文件执行绑定,以仅绑定实际导入的导出。这将进一步减小捆绑包的大小

他们还可以拉出部分的零件