mirror of https://github.com/artf/grapesjs.git
nocodeframeworkdrag-and-dropsite-buildersite-generatortemplate-builderui-builderweb-builderweb-builder-frameworkwebsite-builderno-codepage-builder
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
const pkg = require('./package.json');
|
|
const webpack = require('webpack');
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
let plugins = [];
|
|
|
|
module.exports = env => {
|
|
const name = pkg.name;
|
|
const isProd = env === 'prod';
|
|
const output = {
|
|
path: path.join(__dirname),
|
|
filename: 'dist/grapes.min.js',
|
|
library: name,
|
|
libraryTarget: 'umd',
|
|
};
|
|
|
|
if (isProd) {
|
|
plugins = [
|
|
new webpack.optimize.ModuleConcatenationPlugin(),
|
|
new webpack.BannerPlugin(`${name} - ${pkg.version}`),
|
|
];
|
|
} else if (env === 'dev') {
|
|
output.filename = 'dist/grapes.js';
|
|
} else {
|
|
const index = 'index.html';
|
|
const indexDev = `_${index}`;
|
|
const template = fs.existsSync(indexDev) ? indexDev : index;
|
|
plugins.push(new HtmlWebpackPlugin({ template, inject: false }));
|
|
}
|
|
|
|
plugins.push(new webpack.ProvidePlugin({
|
|
_: 'underscore',
|
|
Backbone: 'backbone'
|
|
}));
|
|
|
|
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': '*' } },
|
|
module: {
|
|
rules: [{
|
|
test: /\/index\.js$/,
|
|
loader: 'string-replace-loader',
|
|
query: {
|
|
search: '<# VERSION #>',
|
|
replace: pkg.version
|
|
}
|
|
},{
|
|
test: /\.js$/,
|
|
loader: 'babel-loader',
|
|
include: /src/
|
|
}],
|
|
},
|
|
resolve: {
|
|
modules: ['src', 'node_modules'],
|
|
alias: {
|
|
jquery: 'cash-dom'
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|