UNPKG

react-google-oauth

Version:
132 lines (129 loc) 4.47 kB
const autoprefixer = require('autoprefixer'); const path = require('path'); const webpack = require('webpack'); const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { devtool: 'cheap-module-source-map', entry: './src/index.js', output: { filename: 'react-google-oauth.js', path: path.resolve(__dirname, 'dist'), // include comments in bundles with information about the contained modules pathinfo: true, publicPath: '/', library: "react-google-oauth", libraryTarget: "umd" }, module: { //makes missing exports an error instead of warning strictExportPresence: true, rules: [ // First, run the linter. // It's important to do this before Babel processes the JS. { test: /\.(js|jsx)$/, enforce: 'pre', use: [ { loader: require.resolve('eslint-loader'), }, ], exclude: /node_modules/, }, // ** ADDING/UPDATING LOADERS ** // The "file" loader handles all assets unless explicitly excluded. // The `exclude` list *must* be updated with every change to loader extensions. // When adding a new loader, you must add its `test` // as a new entry in the `exclude` list for "file" loader. // "file" loader makes sure those assets get served by WebpackDevServer. // When you `import` an asset, you get its (virtual) filename. // In production, they would get copied to the `build` folder. { exclude: [ /\.html$/, /\.(js|jsx)$/, /\.css$/, /\.json$/, /\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/, ], loader: require.resolve('file-loader'), options: { name: 'static/media/[name].[hash:8].[ext]', }, }, // Process JS with Babel. { test: /\.(js|jsx)$/, exclude: /node_modules/, loader: require.resolve('babel-loader'), options: { presets: ['env'], plugins: [require('babel-plugin-transform-object-rest-spread')], // This is a feature of `babel-loader` for webpack (not Babel itself). // It enables caching results in ./node_modules/.cache/babel-loader/ // directory for faster rebuilds. cacheDirectory: true, }, }, { test: /\.css$/, use: [ require.resolve('style-loader'), { loader: require.resolve('css-loader'), options: { importLoaders: 1, modules: false, localIdentName: "[name]__[local]___[hash:base64:5]" }, }, // "postcss" loader applies autoprefixer to our CSS. // "css" loader resolves paths in CSS and adds assets as dependencies. // "style" loader turns CSS into JS modules that inject <style> tags. // In production, we use a plugin to extract that CSS to a file, but // in development "style" loader enables hot editing of CSS. { loader: require.resolve('postcss-loader'), options: { // Necessary for external CSS imports to work // https://github.com/facebookincubator/create-react-app/issues/2677 ident: 'postcss', plugins: () => [ require('postcss-flexbugs-fixes'), autoprefixer({ browsers: [ '>1%', 'last 4 versions', 'Firefox ESR', 'not ie < 9', // React doesn't support IE8 anyway ], flexbox: 'no-2009', }), ], }, }, ], } ], }, plugins: [ new CleanWebpackPlugin(['dist']), // Add module names to factory functions so they appear in browser profiler on dev env. new webpack.NamedModulesPlugin(), // This is necessary to emit hot updates (currently CSS only): new webpack.HotModuleReplacementPlugin(), // Watcher doesn't work well if you mistype casing in a path so we use // a plugin that prints an error when you attempt to do this. new CaseSensitivePathsPlugin(), ], resolve: { extensions: ['.js','.jsx'], }, performance: { hints: false, } };