268 lines
6.9 KiB
JavaScript
268 lines
6.9 KiB
JavaScript
/* eslint-disable indent,comma-dangle */
|
|
/**
|
|
* 2007-2018 PrestaShop
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* This source file is subject to the Open Software License (OSL 3.0)
|
|
* that is bundled with this package in the file LICENSE.txt.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* https://opensource.org/licenses/OSL-3.0
|
|
* If you did not receive a copy of the license and are unable to
|
|
* obtain it through the world-wide-web, please send an email
|
|
* to license@prestashop.com so we can send you a copy immediately.
|
|
*
|
|
* DISCLAIMER
|
|
*
|
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
|
* versions in the future. If you wish to customize PrestaShop for your
|
|
* needs please refer to http://www.prestashop.com for more information.
|
|
*
|
|
* @author PrestaShop SA <contact@prestashop.com>
|
|
* @copyright 2007-2018 PrestaShop SA
|
|
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
|
|
* International Registered Trademark & Property of PrestaShop SA
|
|
*/
|
|
|
|
const path = require('path');
|
|
const webpack = require('webpack');
|
|
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
const keepLicense = require('uglify-save-license');
|
|
|
|
const config = {
|
|
entry: {
|
|
main: [
|
|
'prestakit/dist/js/prestashop-ui-kit.js',
|
|
'jquery-ui-dist/jquery-ui.js',
|
|
'bootstrap-tokenfield/dist/bootstrap-tokenfield.js',
|
|
'eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js',
|
|
'jwerty/jwerty.js',
|
|
'magnific-popup/dist/jquery.magnific-popup.js',
|
|
'dropzone/dist/dropzone.js',
|
|
'typeahead.js/dist/typeahead.jquery.js',
|
|
'typeahead.js/dist/bloodhound.min.js',
|
|
// 'bootstrap-slider/dist/bootstrap-slider.js',
|
|
'sprintf-js/src/sprintf.js',
|
|
'./js/theme.js',
|
|
],
|
|
catalog: [
|
|
'./js/app/pages/catalog',
|
|
],
|
|
stock: [
|
|
'./js/app/pages/stock',
|
|
],
|
|
translations: [
|
|
'./js/app/pages/translations',
|
|
],
|
|
logs: [
|
|
'./js/pages/logs',
|
|
],
|
|
improve_design_positions: [
|
|
'./js/pages/improve/design_positions',
|
|
],
|
|
order_preferences: [
|
|
'./js/pages/order-preferences',
|
|
],
|
|
order_delivery: [
|
|
'./js/pages/order/delivery',
|
|
],
|
|
product_preferences: [
|
|
'./js/pages/product-preferences',
|
|
],
|
|
imports: [
|
|
'./js/pages/import',
|
|
],
|
|
localization: [
|
|
'./js/pages/localization',
|
|
],
|
|
invoices: [
|
|
'./js/pages/invoices',
|
|
],
|
|
geolocation: [
|
|
'./js/pages/geolocation',
|
|
],
|
|
payment_preferences: [
|
|
'./js/pages/payment-preferences',
|
|
],
|
|
email: [
|
|
'./js/pages/email',
|
|
],
|
|
sql_manager: [
|
|
'./js/pages/sql-manager',
|
|
],
|
|
catalog_product: [
|
|
'./js/pages/catalog/product',
|
|
],
|
|
backup: [
|
|
'./js/pages/backup',
|
|
],
|
|
module_card: [
|
|
'./js/app/pages/module-card',
|
|
],
|
|
translation_settings: [
|
|
'./js/pages/translation-settings',
|
|
],
|
|
webservice: [
|
|
'./js/pages/webservice',
|
|
],
|
|
module: [
|
|
'./js/pages/module',
|
|
],
|
|
meta: [
|
|
'./js/pages/meta'
|
|
],
|
|
},
|
|
output: {
|
|
path: path.resolve(__dirname, 'public'),
|
|
filename: '[name].bundle.js',
|
|
},
|
|
devServer: {
|
|
hot: true,
|
|
contentBase: path.resolve(__dirname, 'public'),
|
|
publicPath: '/',
|
|
},
|
|
// devtool: 'source-map', // uncomment me to build source maps (really slow)
|
|
resolve: {
|
|
extensions: ['.js', '.vue', '.json'],
|
|
alias: {
|
|
vue$: 'vue/dist/vue.common.js',
|
|
app: path.resolve(__dirname, 'js/app'),
|
|
},
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.js$/,
|
|
include: path.resolve(__dirname, 'js'),
|
|
use: [{
|
|
loader: 'babel-loader',
|
|
options: {
|
|
presets: [
|
|
['es2015', {modules: false}],
|
|
],
|
|
},
|
|
}],
|
|
},
|
|
{
|
|
test: /jquery-ui\.js/,
|
|
use: 'imports-loader?define=>false&this=>window',
|
|
},
|
|
{
|
|
test: /jquery\.magnific-popup\.js/,
|
|
use: 'imports-loader?define=>false&exports=>false&this=>window',
|
|
},
|
|
{
|
|
test: /bloodhound\.min\.js/,
|
|
use: [
|
|
{
|
|
loader: 'expose-loader',
|
|
query: 'Bloodhound',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
test: /dropzone\/dist\/dropzone\.js/,
|
|
loader: 'imports-loader?this=>window&module=>null',
|
|
},
|
|
{
|
|
test: require.resolve('moment'),
|
|
loader: 'imports-loader?define=>false&this=>window',
|
|
},
|
|
{
|
|
test: /typeahead\.jquery\.js/,
|
|
loader: 'imports-loader?define=>false&exports=>false&this=>window',
|
|
},
|
|
{
|
|
test: /bootstrap-tokenfield\.js/,
|
|
loader: 'imports-loader?define=>false&exports=>false&this=>window',
|
|
},
|
|
{
|
|
test: /bootstrap-datetimepicker\.js/,
|
|
loader: 'imports-loader?define=>false&exports=>false&this=>window',
|
|
},
|
|
{
|
|
test: /jwerty\/jwerty\.js/,
|
|
loader: 'imports-loader?this=>window&module=>false',
|
|
},
|
|
{
|
|
test: /\.vue$/,
|
|
loader: 'vue-loader',
|
|
options: {
|
|
loaders: {
|
|
js: 'babel-loader?presets[]=es2015&presets[]=stage-2',
|
|
css: 'postcss-loader',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
use: ExtractTextPlugin.extract({
|
|
fallback: 'style-loader',
|
|
use: ['css-loader'],
|
|
}),
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
use: ExtractTextPlugin.extract({
|
|
use: [
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
minimize: true,
|
|
// sourceMap: true, // uncomment me to generate source maps
|
|
},
|
|
},
|
|
{
|
|
loader: 'postcss-loader',
|
|
options: {
|
|
// sourceMap: true, // uncomment me to generate source maps
|
|
},
|
|
},
|
|
{
|
|
loader: 'sass-loader',
|
|
options: {
|
|
// sourceMap: true, // uncomment me to generate source maps
|
|
},
|
|
},
|
|
],
|
|
}),
|
|
},
|
|
{
|
|
test: /.(jpg|png|woff(2)?|eot|otf|ttf|svg|gif)(\?[a-z0-9=.]+)?$/,
|
|
use: 'file-loader?name=[hash].[ext]',
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new ExtractTextPlugin('theme.css'),
|
|
new webpack.ProvidePlugin({
|
|
moment: 'moment', // needed for bootstrap datetime picker
|
|
}),
|
|
],
|
|
};
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
config.plugins.push(
|
|
new webpack.optimize.UglifyJsPlugin({
|
|
sourceMap: false,
|
|
compress: {
|
|
sequences: true,
|
|
conditionals: true,
|
|
booleans: true,
|
|
if_return: true,
|
|
join_vars: true,
|
|
drop_console: true,
|
|
},
|
|
output: {
|
|
comments: keepLicense,
|
|
},
|
|
})
|
|
);
|
|
} else {
|
|
config.plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
config.entry.stock.push('webpack/hot/only-dev-server');
|
|
config.entry.stock.push('webpack-dev-server/client?http://localhost:8080');
|
|
}
|
|
|
|
module.exports = config;
|