如何构建完整堆栈开发项目,以便在/ webapp中使用gulp / grunt / webpack工具处理js - 在爆炸性战争中。
我知道我可以让maven / gradle添加一个步骤来执行一些“npm的事情”,但这是一个完整的版本。我也会这样,但我需要即时重新加载功能进行开发。
我希望能够保存一个js文件,让一个观察者拿起它,处理它并将它扔回我爆炸的战争中,这样它a)不会污染我的/ src / main / webapp / b)我希望它与我的java webapp在同一根上下文中共存(有我的jsp并且也吃它)。
我考虑过的一件事是将我的进程js输出到某些/ src / main / webapp / do_not_checkin_folder并在该目录上执行等效的.gitignore。接下来是完整的gradle / maven构建,它将重写index.html中的路径,删除对do_not_checkin_folder的任何提及,并缩短从/ src / main / webapp开始的路径。称之为生产模式。
有人可以建议采用不同的方法。什么对你的项目有用?
答案 0 :(得分:1)
我有一台运行Express的Node服务器代理了我的Java Web服务器的大多数请求,但js请求除外,它使用webpack热中间件来提供服务。
Webpack配置为使用内容src / main / js和webpack-hot-middleware生成单个js页面。
因此,在开发过程中,您将导航到Node Express服务器。在生产中,静态js文件由Java Web服务器提供。
这是我的Node.js for Node:
const PROXY_TARGET = 'http://localhost:9501';
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const config = require('./webpack.config-hot-middleware');
const express = require('express');
const proxy = require( 'http-proxy' );
const proxyServer = proxy.createProxyServer( );
proxyServer.on('error', function(err, req, res) {
console.log('Proxy error: ' + err);
res.writeHead(500, {
'Content-Type': 'text/plain'
});
res.end('Proxy request to ' + PROXY_TARGET + ' failed. Please make sure your Java server is running!');
});
const app = new require('express')();
const port = 3000;
const compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }));
app.use(webpackHotMiddleware(compiler));
app.use('/', function(req, res) {
proxyServer.web(req, res, {
target: PROXY_TARGET
});
});
app.listen(port, function(error) {
if (error) {
console.error(error);
} else {
console.info('==> Listening on port %s.);
}
});