* build(webpack): Fix the request of a dependency is an expression Critical dependency: the request of a dependency is an expression * style: Fix spaces after object literal braces
93 lines
3.0 KiB
JavaScript
93 lines
3.0 KiB
JavaScript
const webpack = require("webpack");
|
|
const SvgStore = require('webpack-svgstore-plugin');
|
|
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
const path = require('path');
|
|
const CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin");
|
|
const ContextReplacementPlugin = require("webpack/lib/ContextReplacementPlugin");
|
|
|
|
const webpackHelper = require('../../scripts/webpack-helper');
|
|
|
|
const rootDir = path.resolve(__dirname, '../');
|
|
console.log(rootDir, __dirname);
|
|
|
|
module.exports = {
|
|
entry: {
|
|
polyfills: path.resolve(rootDir, 'src/shared/polyfills.ts'),
|
|
vendor: path.resolve(rootDir, 'src/vendor.ts'),
|
|
app: path.resolve(rootDir, 'src/main.ts')
|
|
},
|
|
output: {
|
|
path: rootDir + "/dist",
|
|
filename: "[name].uhk.js"
|
|
},
|
|
devtool: 'source-map',
|
|
resolve: {
|
|
extensions: ['.webpack.js', '.web.js', '.ts', '.js'],
|
|
modules: ["node_modules"],
|
|
alias: {
|
|
jquery: 'jquery/dist/jquery.min.js',
|
|
select2: 'select2/dist/js/select2.full.min.js',
|
|
'file-saver': 'filesaver.js/FileSaver.min.js'
|
|
}
|
|
},
|
|
module: {
|
|
rules: [
|
|
{ test: /\.ts$/, use: ['ts-loader', 'angular2-template-loader'], exclude: /node_modules/ },
|
|
{ test: /\.html$/, loader: 'html-loader?attrs=false' },
|
|
{
|
|
test: /\.scss$/,
|
|
exclude: /node_modules/,
|
|
use: ['raw-loader', 'sass-loader']
|
|
},
|
|
{ test: /jquery/, loader: 'expose-loader?$!expose-loader?jQuery' }
|
|
]
|
|
},
|
|
plugins: [
|
|
// new webpack.optimize.UglifyJsPlugin({ minimize: true })
|
|
new SvgStore({
|
|
svgoOptions: {
|
|
plugins: [
|
|
{ removeTitle: true }
|
|
]
|
|
}
|
|
}),
|
|
new CopyWebpackPlugin(
|
|
[
|
|
{ from: './web/src/index.html', flatten: true },
|
|
{
|
|
from: 'node_modules/font-awesome/css/font-awesome.min.css',
|
|
to: 'vendor/font-awesome/css/font-awesome.min.css'
|
|
},
|
|
{
|
|
from: 'node_modules/font-awesome/fonts',
|
|
to: 'vendor/font-awesome/fonts'
|
|
},
|
|
{
|
|
from: 'node_modules/bootstrap/dist/',
|
|
to: 'vendor/bootstrap'
|
|
},
|
|
{
|
|
from: 'images',
|
|
to: 'images'
|
|
},
|
|
],
|
|
{
|
|
ignore: ['*.config.js']
|
|
}
|
|
),
|
|
new webpack.ProvidePlugin({
|
|
$: "jquery",
|
|
jQuery: "jquery"
|
|
}),
|
|
new CommonsChunkPlugin({
|
|
name: ['app', 'vendor', 'polyfills']
|
|
}),
|
|
new ContextReplacementPlugin(
|
|
// The (\\|\/) piece accounts for path separators in *nix and Windows
|
|
/angular(\\|\/)core(\\|\/)@angular/,
|
|
webpackHelper.root(__dirname, './src') // location of your src
|
|
)
|
|
]
|
|
|
|
};
|