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() } }); };
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 }; };
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')],
/** * @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" ] }, {
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,
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': {
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',