mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-16 06:23:18 +00:00
171 lines
5.1 KiB
JavaScript
171 lines
5.1 KiB
JavaScript
/**
|
|
* WEBPACK CONFIG
|
|
*
|
|
*/
|
|
/* eslint-disable no-var */
|
|
require('babel-core/register');
|
|
|
|
// Webpack config for development
|
|
|
|
const webpack = require('webpack');
|
|
const path = require('path');
|
|
const pkg = require('../../package.json');
|
|
// const banner = require('../banner');
|
|
const WebpackNotifierPlugin = require('webpack-notifier');
|
|
const config = require('../config');
|
|
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
|
|
// add loader for external stylesheets:
|
|
var extractCSS = new ExtractTextPlugin({
|
|
filename: '[name].css',
|
|
allChunks: true
|
|
});
|
|
|
|
module.exports = {
|
|
// entry points
|
|
entry: {
|
|
production: config.sourceDir + 'prod/index.js',
|
|
lightbox: config.sourceDir + 'lightbox/index.js',
|
|
'lightbox-mobile': config.sourceDir + 'lightbox-mobile/index.js',
|
|
permaview: config.sourceDir + 'permaview/index.js',
|
|
authenticate: [config.sourceDir + 'authenticate/index.js'],
|
|
account: [config.sourceDir + 'account/index.js'],
|
|
'skin-000000': [config.sourceDir + 'skins/skin-000000.js'],
|
|
'skin-959595': [config.sourceDir + 'skins/skin-959595.js'],
|
|
'skin-FFFFFF': [config.sourceDir + 'skins/skin-FFFFFF.js']
|
|
},
|
|
cache: true,
|
|
watch: true,
|
|
devtool: 'inline-source-map',
|
|
output: {
|
|
path: config.distDir,
|
|
filename: '[name].js',
|
|
chunkFilename: 'lazy-[name].js',
|
|
libraryTarget: 'umd',
|
|
library: config._app,
|
|
publicPath: '/assets/production/'
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.js$/,
|
|
enforce: 'pre',
|
|
loader: 'eslint-loader',
|
|
exclude: /node_modules/,
|
|
include: path.join(__dirname, '../../src')
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
exclude: /node_modules/,
|
|
use: [{
|
|
loader: 'babel-loader',
|
|
options: { presets: ['es2015', 'stage-0'] },
|
|
}],
|
|
},
|
|
{
|
|
test: /\.(ttf|eot|woff|svg|png|jpg|gif)$/,
|
|
use: [
|
|
{
|
|
loader: 'url-loader',
|
|
options: {
|
|
limit: 10000,
|
|
name: '[name].[hash:6].[ext]',
|
|
}
|
|
}
|
|
],
|
|
exclude: /node_modules/
|
|
},
|
|
{
|
|
test: /\.(ttf|eot|woff|svg|png|jpg|jpeg|gif)$/,
|
|
use: [
|
|
{
|
|
loader: 'file-loader',
|
|
options: {
|
|
name: '[name].[hash:6].[ext]'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
"style-loader",
|
|
"css-loader"
|
|
]
|
|
},
|
|
{
|
|
test: /videojs-flash\.js$/,
|
|
loader: 'script-loader'
|
|
},
|
|
// exclude skins as inline-css in dev env
|
|
// {
|
|
// test: /\.scss$/,
|
|
// exclude: /src\/skins\//,
|
|
// loaders: ['style', 'css', 'resolve-url', 'sass?sourceMap']
|
|
// },
|
|
// only skins are extracted as external file in dev env:
|
|
// every css should be exported as file in dev env
|
|
{
|
|
test: /\.scss$/,
|
|
// exclude: /src\/(?!skins)/,
|
|
// include: [path.join(__dirname, '../../src'), path.join(__dirname, '../../stylesheets')],
|
|
use: ExtractTextPlugin.extract({
|
|
fallback: "style-loader",
|
|
use: [
|
|
'css-loader',
|
|
'resolve-url-loader',
|
|
{ loader: 'sass-loader', options: { sourceMap: true } }
|
|
],
|
|
publicPath: './'
|
|
})
|
|
},{
|
|
test: require.resolve('jquery-lazyload'),
|
|
use: "imports-loader?this=>window"
|
|
}, {
|
|
test: require.resolve('geonames-server-jquery-plugin/jquery.geonames'),
|
|
use: "imports-loader?this=>window"
|
|
}, {
|
|
test: require.resolve('bootstrap-multiselect'),
|
|
use: "imports-loader?this=>window"
|
|
}
|
|
]
|
|
},
|
|
resolve: {
|
|
extensions: ['*', '.js', '.css', '.scss']
|
|
},
|
|
plugins: [
|
|
new WebpackNotifierPlugin({
|
|
alwaysNotify: true
|
|
}),
|
|
// new webpack.BannerPlugin(banner),
|
|
new webpack.ProvidePlugin({
|
|
"videojs": "video.js",
|
|
"window.videojs": "video.js"
|
|
}),
|
|
new webpack.DefinePlugin({
|
|
'__DEV__': true,
|
|
'process.env.NODE_ENV': JSON.stringify('development'),
|
|
VERSION: JSON.stringify(pkg.version)
|
|
}),
|
|
new webpack.optimize.CommonsChunkPlugin({
|
|
name: 'commons',
|
|
chunks: ['production', 'lightbox'],
|
|
minChunks: 2
|
|
}),
|
|
new webpack.LoaderOptionsPlugin({
|
|
debug: true,
|
|
options: {
|
|
eslint: {
|
|
configFile: config.eslintDir
|
|
}
|
|
}
|
|
}),
|
|
extractCSS
|
|
// i18next
|
|
],
|
|
externals: {
|
|
jquery: 'jQuery',
|
|
ui: 'jQuery.ui'
|
|
}
|
|
};
|