forked from GrapesJS/grapesjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
70 lines (66 loc) · 1.88 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const HtmlWebpackPlugin = require('html-webpack-plugin');
const pkg = require('./package.json');
const webpack = require('webpack');
const path = require('path');
const fs = require('fs');
const rootDir = path.resolve(__dirname);
let plugins = [];
module.exports = env => {
const name = pkg.name;
const isProd = env === 'prod';
const output = {
path: path.join(__dirname),
filename: 'dist/grapes.js',
library: name,
libraryExport: 'default',
libraryTarget: 'umd',
};
if (isProd) {
plugins = [
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.BannerPlugin(`${name} - ${pkg.version}`),
];
} else if (env === 'dev') {
//output.filename = 'dist/grapes.js';
output.filename = `../../../rails/launchpad-v2/app/assets/javascripts/vendor/grapes.js`
} else {
const index = 'index.html';
const indexDev = `_${index}`;
const template = fs.existsSync(indexDev) ? indexDev : index;
plugins.push(new HtmlWebpackPlugin({ template, inject: false }));
}
return {
entry: './src',
output: output,
plugins: plugins,
mode: isProd ? 'production' : 'development',
devtool: isProd ? 'source-map' : (!env ? 'cheap-module-eval-source-map' : false),
devServer: {
headers: { 'Access-Control-Allow-Origin': '*' },
disableHostCheck: true,
},
module: {
rules: [{
test: /\/index\.js$/,
loader: 'string-replace-loader',
query: {
search: '<# VERSION #>',
replace: pkg.version
}
}, {
test: /\.js$/,
loader: 'babel-loader',
include: /src/,
options: { cacheDirectory: true },
}],
},
resolve: {
modules: ['src', 'node_modules'],
alias: {
jquery: 'cash-dom',
backbone: `${rootDir}/node_modules/backbone`,
underscore: `${rootDir}/node_modules/underscore`,
}
}
};
}