Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
const path = require('path'); | |
const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); | |
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); | |
const CopyWebpackPlugin = require('copy-webpack-plugin'); | |
module.exports = { | |
entry: { | |
main: './ts/main.ts', | |
// captioning: './ts/captioning.ts' | |
}, | |
module: { | |
rules: [ | |
{ | |
test: /\.tsx?$/, | |
exclude: [ | |
/node_modules/, | |
/ImageContentBox\.ts/, | |
/test\.ts/ | |
// path.resolve(__dirname,'ts/vis/ImageContentBox.ts') | |
], | |
use: [{ | |
loader: 'cache-loader' | |
}, | |
{ | |
loader: 'thread-loader', | |
options: { | |
// there should be 1 cpu for the fork-ts-checker-webpack-plugin | |
workers: require('os').cpus().length - 1, | |
}, | |
}, | |
{ | |
loader: 'ts-loader', | |
options: { | |
happyPackMode: true // IMPORTANT! use happyPackMode mode to speed-up compilation and reduce errors reported to webpack | |
} | |
} | |
].slice(process.env.CI ? 2 : 0) // no optimizations for CIs | |
}, | |
{ | |
test: /\.s?css$/, | |
use: [ | |
{ | |
loader: MiniCssExtractPlugin.loader, | |
options: { | |
// you can specify a publicPath here | |
// by default it use publicPath in webpackOptions.output | |
// publicPath: '../' | |
} | |
}, | |
{ | |
loader: 'css-loader', | |
options: { | |
minimize: true, | |
sourceMap: true | |
} | |
}, | |
{ | |
loader: 'sass-loader', | |
options: { | |
sourceMap: true | |
} | |
} | |
] | |
}, | |
{ | |
test: /\.(png|jpg)$/, | |
loader: 'url-loader', | |
options: { | |
limit: 20000 //inline <= 10kb | |
} | |
}, | |
{ | |
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, | |
loader: 'url-loader', | |
options: { | |
limit: 20000, //inline <= 20kb | |
mimetype: 'application/font-woff' | |
} | |
}, | |
{ | |
test: /\.svg(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, | |
loader: 'url-loader', | |
options: { | |
limit: 10000, //inline <= 10kb | |
mimetype: 'image/svg+xml' | |
} | |
}, | |
{ | |
test: /\.(ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9])?$/, | |
loader: 'file-loader' | |
} | |
] | |
}, | |
resolve: { | |
extensions: ['.ts', '.js'] | |
}, | |
plugins: [ | |
new MiniCssExtractPlugin({ | |
// Options similar to the same options in webpackOptions.output | |
// both options are optional | |
// filename: "style.css", | |
// chunkFilename: "chunk.css" | |
}), | |
new ForkTsCheckerWebpackPlugin({ | |
checkSyntacticErrors: true | |
}), | |
new CopyWebpackPlugin([ | |
{from: 'img', to: 'img'}, | |
{from: "demo", to:"demo"} | |
]), | |
], | |
optimization: { | |
splitChunks: { | |
cacheGroups: { | |
vendor: { | |
test: /node_modules/, | |
chunks: "initial", | |
name: "vendor", | |
priority: 10, | |
enforce: true | |
} | |
} | |
} | |
}, | |
output: { | |
filename: '[name].js', | |
path: path.resolve(__dirname, '../dist/') | |
}, | |
devServer: { | |
port: 8090, | |
proxy: { | |
'/api/*': { | |
target: 'http://localhost:8080', | |
secure: false, | |
ws: true | |
} | |
} | |
} | |
}; | |