UNPKG

react-colorscales

Version:

A React component for picking colorscales based on Chroma.js

164 lines (159 loc) 5.89 kB
'use strict'; process.env.BABEL_ENV = 'production'; process.env.NODE_ENV = 'production'; const autoprefixer = require('autoprefixer'); const webpack = require('webpack'); const eslintFormatter = require('react-dev-utils/eslintFormatter'); const paths = require('./paths'); const shouldUseSourceMap = false; module.exports = { // Don't attempt to continue if there are any errors. bail: true, // Generate source maps devtool: shouldUseSourceMap ? 'source-map' : false, entry: paths.appLibIndexJs, output: { path: paths.appBuild, filename: 'index.js', libraryTarget: 'umd' }, resolve: { extensions: ['.web.js', '.js', '.json', '.web.jsx', '.jsx'], }, module: { strictExportPresence: true, rules: [ { test: /\.(js|jsx)$/, enforce: 'pre', use: [ { options: { formatter: eslintFormatter, eslintPath: require.resolve('eslint'), }, loader: require.resolve('eslint-loader'), }, ], include: paths.appLibSrc, }, { // "oneOf" will traverse all following loaders until one will // match the requirements. When no loader matches it will fall // back to the "file" loader at the end of the loader list. oneOf: [ // "url" loader works just like "file" loader but it also embeds // assets smaller than specified size as data URLs to avoid requests. { test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/, /\.svg$/], loader: require.resolve('url-loader'), options: { limit: 10000, name: '[name].[ext]', }, }, // Process JS with Babel. { test: /\.(js|jsx)$/, include: paths.appLibSrc, loader: require.resolve('babel-loader'), options: { compact: true, }, }, // The notation here is somewhat confusing. // "postcss" loader applies autoprefixer to our CSS. // "css" loader resolves paths in CSS and adds assets as dependencies. // "style" loader normally turns CSS into JS modules injecting <style>, // "sass-loader" compiles scss to css // but unlike in development configuration, we do something different. // `ExtractTextPlugin` first applies the "postcss" and "css" loaders // (second argument), then grabs the result CSS and puts it into a // separate file in our build process. This way we actually ship // a single CSS file in production instead of JS code injecting <style> // tags. If you use code splitting, however, any async bundles will still // use the "style" loader inside the async code so CSS from them won't be // in the main CSS file. { test: /\.(css|scss)$/, use: [{ loader: "style-loader" // creates style nodes from JS strings }, { loader: "css-loader" // translates CSS into CommonJS }, { loader: "sass-loader" // compiles Sass to 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', }), ], } }] }, // "file" loader makes sure assets end up in the `build` folder. // When you `import` an asset, you get its filename. // This loader don't uses a "test" so it will catch all modules // that fall through the other loaders. { loader: require.resolve('file-loader'), // Exclude `js` files to keep "css" loader working as it injects // it's runtime that would otherwise processed through "file" loader. // Also exclude `html` and `json` extensions so they get processed // by webpacks internal loaders. exclude: [/\.js$/, /\.html$/, /\.json$/], options: { name: '[name].[ext]', }, }, // ** STOP ** Are you adding a new loader? // Make sure to add the new loader(s) before the "file" loader. ] } ] }, plugins: [ // Minify the code. new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, // Disabled because of an issue with Uglify breaking seemingly valid code: // https://github.com/facebookincubator/create-react-app/issues/2376 // Pending further investigation: // https://github.com/mishoo/UglifyJS2/issues/2011 comparisons: false, }, output: { comments: false, // Turned on because emoji and regex is not minified properly using default // https://github.com/facebookincubator/create-react-app/issues/2488 ascii_only: true, }, sourceMap: shouldUseSourceMap, }), ], externals: { 'react': 'react', 'react-dom': 'react-dom' }, // Some libraries import Node modules but don't use them in the browser. // Tell Webpack to provide empty mocks for them so importing them works. node: { dgram: 'empty', fs: 'empty', net: 'empty', tls: 'empty', }, }