module.exports = (env) => {
    return merge.strategy({
        'resolve.alias': 'prepend'
    })(base.webpackDefaults(env, config, bundles), {
        entry,
        externals: {
            jquery: 'jQuery'
        },
        module: {
            rules: [
                {
                    test: /.*\.(jpe?g|png|gif|svg|woff2?|ttf|eot)$/,
                    use: {
                        loader: 'file-loader'
                    }
                }
            ]
        },
        resolve: {
            alias: generateModuleAliases()
        }
    });
};
Exemple #2
0
const path = require('path')
const merge = require('webpack-merge')
const nodeExternals = require('webpack-node-externals')
const { name, version } = require('./package.json')
const { DefinePlugin } = require('webpack')
const SourceMapSupport = require('webpack-source-map-support')
const CopyPlugin = require('copy-webpack-plugin')

process.env.DISABLE_ENV_INJECTION = true
const production = require('@skypager/webpack/config/webpack.config.prod')

const nodeConfig = merge.strategy({ entry: 'replace', node: 'replace', externals: 'replace' })(
  Object.assign({}, production, {
    plugins: production.plugins.filter(
      p =>
        !p.constructor ||
        (p.constructor &&
          p.constructor.name !== 'UglifyJsPlugin' &&
          p.constructor.name !== 'ManifestPlugin' &&
          p.constructor.name !== 'DefinePlugin' &&
          p.constructor.name !== 'HtmlWebpackPlugin')
    ),
  }),
  {
    name: 'node',
    target: 'node',
    node: {
      __dirname: false,
      __filename: false,
      process: false,
    },
const { resolve } = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');

const base = require('./webpack.base.js');

const PORT = 3333;
const PUBLIC_PORT = 8080;

module.exports = merge.strategy({
  entry: 'prepend',
})(base, {
  mode: 'development',
  devtool: 'inline-source-map',
  devServer: {
    contentBase: './assets',
    publicPath: '/',
    inline: true,
    historyApiFallback: true,
    hot: true,
    port: PORT,
    host: '0.0.0.0',
    stats: 'minimal',
    watchOptions: {
      poll: 1000
    },
    proxy: {
      '/api/*': {
        target: `http://server:${PUBLIC_PORT}`,
        pathRewrite: {
          '/api' : ''
import { strategy } from 'webpack-merge';
import { DllPlugin } from 'webpack';
import path from 'path';
import { cacheDir } from './paths';

import reject from 'lodash/reject';
import get from 'lodash/get';
import omit from 'lodash/omit';

import mapParentConfig from './mapParentConfig';

const webpackMerge = strategy({
  entry: 'append',
  output: 'append',
  plugins: 'append',
});

// omit properties that can break things
const prepare = config => {
  // We don't want are own plugin in the DLL config
  const plugins = reject(
    config.plugins,
    plugin => get(plugin, 'constructor.name') === 'AutoDLLPlugin'
  );

  // context is omitted becouse we already assigned the parent context as the defaults in createSettings
  // plugins are ommited by default too.
  // It's not ideal, but it's better to let the user make a conscious choice about it.
  const props = ['context', 'plugins', 'entry', 'output'];
  return { ...omit(config, props), plugins };
};
Exemple #5
0
const path = require('path')
const merge = require('webpack-merge')
const nodeExternals = require('webpack-node-externals')
const { name, version } = require('./package.json')
const { DefinePlugin } = require('webpack')
const SourceMapSupport = require('webpack-source-map-support')

process.env.DISABLE_ENV_INJECTION = true
const production = require('@skypager/webpack/config/webpack.config.prod')

production.plugins = production.plugins.filter(
  p => !p.constructor || (p.constructor && p.constructor.name !== 'UglifyJsPlugin')
)

module.exports = merge.strategy({ entry: 'replace', node: 'replace', externals: 'replace' })(
  production,
  {
    name: 'node',
    target: 'node',
    node: false,
    resolve: {
      alias: {
        runtime: path.resolve(__dirname, '..', '..', 'runtime', 'src'),
      },
    },
    externals: [
      nodeExternals({ modulesDir: path.resolve(__dirname, 'node_modules') }),
      nodeExternals({ modulesDir: path.resolve(__dirname, '..', '..', '..', 'node_modules') }),
    ],
    entry: {
      index: ['@babel/polyfill/noConflict', path.resolve(__dirname, 'src', 'index.js')],
Exemple #6
0
/**
 * @author: @AngularClass
 */

const helpers = require('./helpers');
const webpackMerge = require('webpack-merge'); // used to merge webpack configs
const webpackMergeDll = webpackMerge.strategy({plugins: 'replace'});
const commonConfig = require('./webpack.common.js'); // the settings that are common to prod and dev

/**
 * Webpack Plugins
 */
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');
const DefinePlugin = require('webpack/lib/DefinePlugin');
const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');

/**
 * Webpack Constants
 */
const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
const HOST = process.env.HOST || 'localhost';
const PORT = process.env.PORT || 3000;
const HMR = helpers.hasProcessFlag('hot');
const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, {
  host: HOST,
  port: PORT,
  ENV: ENV,
  HMR: HMR
});
// require() is used rather than import because hot reloading with webpack
// requires webpack to transform modules from ES6 to ES5 instead of babel
// and webpack can not transform its own config files.
const { resolve } = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const config = require('./webpack.client.base.config');
const webpackConfigLoader = require('react-on-rails/webpackConfigLoader');
const configPath = resolve('..', 'config');
const { output, settings } = webpackConfigLoader(configPath);

// entry is prepended because 'react-hot-loader/patch' must be the very first entry
// for hot reloading to work.
module.exports = merge.strategy(
  {
    entry: 'prepend'
  }
)(config, {

  devtool: 'eval-source-map',

  entry: {
    'app-bundle': [
      'react-hot-loader/patch',
      `webpack-dev-server/client?http://${settings.dev_server.host}:${settings.dev_server.port}`,
      'webpack/hot/only-dev-server'
    ],
  },

  output: {
    filename: '[name].js',
const path = require('path')
const webpack = require('webpack')
const merge = require('webpack-merge')
const base = require('./webpack.config.base')
const ui = require('./webpack.config.cozy-ui')

const SRC_DIR = path.resolve(__dirname, '../src')

const mimerPath = require.resolve(path.join(SRC_DIR, 'ducks/notifications/vendor/mimer.min'))

// Used to disable node modules we do not use
const noop = require.resolve(path.join(SRC_DIR, 'ducks/notifications/noop'))

module.exports = merge.strategy({
  plugins: 'replace',
  output: 'replace',
  entry: 'replace'
})(base, ui, {
  entry: {
    onOperationCreate: path.resolve(SRC_DIR, './targets/services/onOperationCreate')
  },
  target: 'node',
  output: {
    path: path.resolve(__dirname, '../build'),
    filename: '[name].js'
  },
  module: {
    rules: [
      {
        test: /\.hbs$/,
        include: SRC_DIR,
const base = require('./base');
const dfPath = require('./path');
const merge = require('webpack-merge');
const webpack = require('webpack');

let strategyMerge = merge.strategy({
    entry: 'prepend',
});

let config = {

    module:{
        rules: [
            {
                test: /\.js$/,
                use:['babel-loader'],
                exclude: [
                    dfPath.node_modules
                ]
            },
            {
				test: /\.less$/,
				use: [
                    'style-loader',
                    {
                        loader: 'css-loader',
                    },
                    "less-loader"
                ]
			},
            {
Exemple #10
0
var ExtratTextPlugin = require('extract-text-webpack-plugin');

var webpackMerge = require('webpack-merge');
var commonConfig = require('./webpack.common');

//---

var helpers = require('./helpers');

helpers.METADATA.HMR = false;

//---

// https://github.com/survivejs/webpack-merge#merging-with-strategies
module.exports = webpackMerge.strategy({
  'module.rules' : 'replace'
})(commonConfig, {

  // define loaders used by webpack
  module : {
    rules : [

      // @begin: assets
      {
        test : /\.(jpg?g|png|gif|svg)$/,
        // loaders are applied from last one to first one in the array
        use : [
          {
            loader : 'url-loader',
            options : {
              // Convert images < 20k to base64 strings
const commonConfig = require('./webpack.common');


const testConfig = {
    devtool: 'inline-source-map',
    output: {
        path: null,
        filename: '[name].[chunkHash].js'
    },
    module: {
        rules: [
            {
                test: /\.spec.ts$/,
                use: [
                    'awesome-typescript-loader',
                    'angular2-template-loader'
                ],
            },
            {
                test: /\.(woff|woff2|eot|svg|ttf)$/,
                use: ['null-loader']
            }
        ]
    },
    plugins: [new ExtractTextPlugin({
        filename: '[name].[hash].css'
    })]
};

module.exports = webpackMerge.strategy({ plugins: 'replace' })(commonConfig, testConfig);
import template from 'lodash/template';
import {readFileSync} from 'fs';
import {join, resolve, sep} from 'path';
import {strategy} from 'webpack-merge';
import BannerPlugin from 'webpack/lib/BannerPlugin';
import UglifyJsPlugin from 'webpack/lib/optimize/UglifyJsPlugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import pkg from './package.json';

const merge = strategy(({plugins: 'replace'}));

const banner = template(readFileSync(join(__dirname, 'LICENSE_BANNER'), 'utf8'))({
    pkg,
    date: new Date()
});

export const build = {
    devtool: 'source-map',
    entry: {
        [pkg.name]: resolve('./index.js')
    },
    externals: [
        // handle splitting modern lodash paths:
        // import merge from 'lodash/merge'; -> _.merge
        (context, request, callback) => {
            if (/^lodash/.test(request)) {
                const paths = request.split(sep);
                return callback(null, {
                    root: ['_'].concat(paths.length > 1 ? [paths[paths.length - 1]] : []),
                    commonjs: request,
                    commonjs2: request,
Exemple #13
0
const merge = require('webpack-merge')
const nodeExternals = require('webpack-node-externals')
const cwd = __dirname
const path = require('path')
const SourceMapSupport = require('webpack-source-map-support')

const webConfig = merge.strategy({ entry: 'replace' })(
  require('@skypager/webpack/config/webpack.config.prod'),
  {
    name: 'web',
    output: {
      libraryTarget: 'umd',
      library: 'SkypagerHelpersClient',
    },
    entry: {
      'skypager-helpers-client': path.resolve(cwd, 'src', 'index.js'),
    },
  }
)

const minifiedWebConfig = merge.strategy({ entry: 'replace' })(
  require('@skypager/webpack/config/webpack.config.prod'),
  {
    name: 'web',
    output: {
      libraryTarget: 'umd',
      library: 'SkypagerHelpersClient',
    },
    externals: [
      {
        '@skypager/runtime': {
Exemple #14
0
const webpack = require('webpack');
const Merge = require('webpack-merge');
const CommonConfig = require('./webpack.common.js');

module.exports = Merge.strategy()(CommonConfig, {
    devtool: 'cheap-module-eval-source-map',

    devServer: {
        host: 'localhost',
        port: 5579,
        publicPath: '/',
        contentBase: 'public',
        historyApiFallback: true,
        hot: false,
        inline: true,
        quiet: false,
        noInfo: false,
        compress: true,
        stats: {
            assets: false,
            colors: true,
            version: false,
            hash: false,
            timings: false,
            chunks: false,
            chunkModules: false
        }
    }
});
const ClosureCompilerPlugin = require('webpack-closure-compiler');
const webpack = require('webpack');

let extractOption = {
    allChunks: true,
    filename: 'assets/css/[name]_[hash:6].css'
};

const extractCSS = new extractTextWebpackPlugin(extractOption)
const extractLESS = new extractTextWebpackPlugin(extractOption)
const extractSCSS = new extractTextWebpackPlugin(extractOption)

let strategyMerge = merge.strategy({
    entry: 'replace',
    output: 'replace',
	module:{
		rules: 'replace'
	}
});

let config = {

    entry: {
        vendor: ['jquery', 'react', 'react-dom', 'react-router-dom'],
        app: path.resolve(dfPath.root,'src/app.js')
    },
    output: {
        path: dfPath.dist,
        filename: 'assets/js/[name]_[chunkhash].bundle.js',
        publicPath: '/',
        chunkFilename: 'assets/js/[name].sepChunk.js',