WebIDE/webpack.config.js

134 lines
3.2 KiB
JavaScript

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CODE_SERVICE_HOST = 'https://www.gitlink.org.cn/';
module.exports = (env, options) => {
return {
entry: './src/main.tsx',
target: 'web',
mode: 'development',
watch: true,
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: [['postcss-preset-env']],
},
},
},
'sass-loader',
],
},
{
test: /\.module.less$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
sourceMap: true,
esModule: false,
modules: {
mode: 'local',
localIdentName: '[local]___[hash:base64:5]',
},
},
},
'less-loader',
],
},
{
test: /^((?!\.module).)*less$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1,
sourceMap: true,
esModule: false,
},
},
{
loader: 'less-loader',
options: {
lessOptions: {
javascriptEnabled: true,
},
},
},
],
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
esModule: false,
},
},
],
},
],
},
externals: {
react: 'React',
'react-dom': 'ReactDOM',
alex: 'Alex',
// moment: 'moment',
// antd: 'antd',
},
resolve: { extensions: ['.tsx', '.ts', '.js'] },
output: {
filename: 'main.bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: ''
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
publicPath: '/',
inject: true,
minify: false,
}),
],
devServer: {
openPage: 'gitlink/Gitlink/forgeplus/tree/master',
proxy: {
'/code-service': {
target: CODE_SERVICE_HOST,
headers: {
// cookie 模拟 提交代码 qingyou/test
Cookie: 'user_id=BAhpA3p1AQ%3D%3D--016cfd4d2c67651b141d9ea39b418fff55bd859c; autologin=undefined; autologin_trustie=dbab4c6a48684c51b6691a28de3f6e4201c4fce3; states=undefined'
},
secure: false,
changeOrigin: true,
pathRewrite: {
'^/code-service': '',
},
onProxyReq(request) {
request.setHeader('origin', CODE_SERVICE_HOST);
},
},
},
historyApiFallback: true,
},
};
};