forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 | 
						|
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
const path = require("path");
 | 
						|
const webpack = require("webpack");
 | 
						|
const { ResourceUriPlugin } = require("./tools/resourceUriPlugin");
 | 
						|
 | 
						|
const absolute = relPath => path.join(__dirname, relPath);
 | 
						|
 | 
						|
const resourcePathRegEx = /^resource:\/\/activity-stream\//;
 | 
						|
 | 
						|
module.exports = (env = {}) => ({
 | 
						|
  mode: "none",
 | 
						|
  entry: absolute("content-src/activity-stream.jsx"),
 | 
						|
  output: {
 | 
						|
    path: absolute("data/content"),
 | 
						|
    filename: "activity-stream.bundle.js",
 | 
						|
    library: "NewtabRenderUtils",
 | 
						|
  },
 | 
						|
  // TODO: switch to eval-source-map for faster builds. Requires CSP changes
 | 
						|
  devtool: env.development ? "inline-source-map" : false,
 | 
						|
  plugins: [
 | 
						|
    // The ResourceUriPlugin handles translating resource URIs in import
 | 
						|
    // statements in .mjs files, in a similar way to what babel-jsm-to-commonjs
 | 
						|
    // does for jsm files.
 | 
						|
    new ResourceUriPlugin({ resourcePathRegEx }),
 | 
						|
    new webpack.BannerPlugin(
 | 
						|
      `THIS FILE IS AUTO-GENERATED: ${path.basename(__filename)}`
 | 
						|
    ),
 | 
						|
    new webpack.optimize.ModuleConcatenationPlugin(),
 | 
						|
  ],
 | 
						|
  module: {
 | 
						|
    rules: [
 | 
						|
      {
 | 
						|
        test: /\.jsx?$/,
 | 
						|
        exclude: /node_modules\/(?!@fluent\/).*/,
 | 
						|
        loader: "babel-loader",
 | 
						|
        options: {
 | 
						|
          presets: ["@babel/preset-react"],
 | 
						|
          plugins: ["@babel/plugin-proposal-optional-chaining"],
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.jsm$/,
 | 
						|
        exclude: /node_modules/,
 | 
						|
        loader: "babel-loader",
 | 
						|
        // Converts .jsm files into common-js modules
 | 
						|
        options: {
 | 
						|
          plugins: [
 | 
						|
            [
 | 
						|
              "./tools/babel-jsm-to-commonjs.js",
 | 
						|
              {
 | 
						|
                basePath: resourcePathRegEx,
 | 
						|
                removeOtherImports: true,
 | 
						|
                replace: true,
 | 
						|
              },
 | 
						|
            ],
 | 
						|
          ],
 | 
						|
        },
 | 
						|
      },
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  // This resolve config allows us to import with paths relative to the root directory, e.g. "lib/ActivityStream.jsm"
 | 
						|
  resolve: {
 | 
						|
    extensions: [".js", ".jsx"],
 | 
						|
    modules: ["node_modules", "."],
 | 
						|
    fallback: {
 | 
						|
      stream: require.resolve("stream-browserify"),
 | 
						|
    },
 | 
						|
  },
 | 
						|
  externals: {
 | 
						|
    "prop-types": "PropTypes",
 | 
						|
    react: "React",
 | 
						|
    "react-dom": "ReactDOM",
 | 
						|
    redux: "Redux",
 | 
						|
    "react-redux": "ReactRedux",
 | 
						|
    "react-transition-group": "ReactTransitionGroup",
 | 
						|
  },
 | 
						|
});
 |