Add more entry points

In addition to src/index.js, I have other entry points in my app. How do I add them?

You could render to multiple html elements in index.js, is that what you mean?
reactdom.render(App1, div1)
reactdom.render(App2, div2)
reactdom.render(App3, div3)

@riceyeh I think you asked this already? is there anything here different from https://github.com/facebookincubator/create-react-app/issues/1079

Can you explain your use case in more detail?whike you asked this earlier, I wonder if I misunderstood your use case.

For example, when preparing multiple apps I might want to do index.html for web and touch-kiosk.html for other devices. Basically using components and composition to do multiple apps. For this I need not just few html files but multiple entry points for webpack.

I would like to be able to create multiple bundles.
For example:
admin.bundle.js       # for admin section in my site
client.bundle.js        # for client section

Now I am forced to create two applications:
create-react-app admin
create-react-app client

This approach seem to be excessive. It would be great if it was possible to separate the bundles within a single application.

Thanks for sharing the use cases. We might support this eventually but for now I recommend either separate apps or ejecting and manually configuring Webpack.

You could do something funky with shell scripting. Not sure how practical this is but it will solve your problem (from how I interpret it).
Have two entry point js files, lets go with user.js and admin.js.
Have two build commands in package.json; build-user, build-admin.
When you go to run build-user, before running react-scripts build, have some shell code that copies user.js to index.js in your source code. Same for build-admin, just copy it's entry point to index.js before running the actual build command. This way if you're working on the same entry point consistently, you can still use build.
package.json
"build": "react-scripts build",
"build-user": "cp src/user.js src/index.js && react-scripts build",
"build-admin": "cp src/admin.js src/index.js && react-scripts build"

Maybe we could pass entry point to webpack instead? Then add instructions of shell scripting it.

I ran in to a similar issue today, and there appears to be an easier and more elegant workaround to this, similar to what @tbillington had mentioned.  Keep in mind, I am pretty new to React/Webpack/Babel/etc, so forgive me any nube mistakes.
You can simulate having multiple HTML files by using URL parameters on the Index.html file.  In index.js, you simply parse out the URL param and serve the appropriate React Component into the root div based on that parameter.  In this case, the default would be App, but if you load it with
_http://www.myhost.com/index.html?startPage=SecondApp_
... it will serve up the SecondApp React component.
The App.js and index.html are the boilerplate created by create-react-app.
Index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import SecondApp from './SecondApp';
import './index.css';

// Copied from http:jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html
function getUrlVars() {
  var vars = [], hash;
  var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  for (var i = 0; i < hashes.length; i++) {
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
  }
  return vars;
}

var urlParams = getUrlVars();

switch (urlParams["startPage"]) {
  case "SecondApp":
    ReactDOM.render(<SecondApp />, document.getElementById('root'));
    break;

  case undefined:
  default:
    ReactDOM.render(<App />, document.getElementById('root'));
    break;
}

SecondApp.js
import React, { Component } from 'react';

class SecondApp extends Component {
    constructor() {
        super();
    }
    render() {
        return
MY SECOND APP!
;
    }
}

export default SecondApp;

This way, everything will get packaged, minified, transmorgrifacated, etc.  It seems a lot more palatable to do it this way than ejecting entirely.  If you have legacy HTML/Javascript that isn't part of the module system, you put that in the public directory (and subdirectories), and Webpack will just copy it untouched.
Let me know if this is helpful.
Nick

I'm also trying to implement a User / Admin scenario.
@carruthe, I believe your approach is not working for me because the User part is simple and should be as light weight (code size wise) as possible as it's expected to be accessed mainly on mobile. The Admin part is more complex with more dependencies and expected to be accessed predominantly on desktop. I'd therefore prefer separate JS bundles for Client and Admin.
@tbillington, I think your suggestion should work with a bit of extra scripting to merge the separate build outputs into one, or am I passed duct-tape-strength?

For admin/user use case you can use require.ensure(dependencies, callback) to load module async.
more detail
but I like create-react-app support multiple entry/bundle.

I agree it's something we'd like to see in the future.

I've implemented this as proof of concept, so you can try it already by installing<EMAIL_ADDRESS>
npm uninstall --save-dev react-scripts
npm install --save-dev<EMAIL_ADDRESS>Create the ./pages folder in the root of project and put them a *.js file (for example admin.js)
npm run start
Open http://localhost:3000/admin.html 🎉

Also I think it's a good first step for prerendred pages. All we need now is to generate *.html pages differently.
Changes: https://github.com/stockspiking/create-react-app/commit/fced96efe4d2c717ec95f48548998b5da7e03dcc

Known issues

Dev server doesn't recompile after adding new entries
New separated chunk /static/js/polyfills.js may be added after other scripts.

@kohver Do you think it would be best to have a separate html file or using react-router to lazy load those extra js required. Something like this http://moduscreate.com/code-splitting-for-react-router-with-es6-imports/

My use case of having multiple entry points is that i'm developing plugins for cloud solutions of atlassian (jira, confluence) and all plugins injected into the system by iframe, so in different places like admin panel, main page panel, sections inside issues e.t.c. i need html page, since i want to use react i need to split my app into multiple pieces. It's quite inconvinient to create different folders for each section of the whole app bcs they could be very small and it would be easier to split them into folders by page or section. So the only way to me (for now) is to create my own build process.

I also have a similar use case as Alexter-progs. I am developing a chrome extension which requires both background.js and inject.js files. At present, there isn't a way for me to generate separate bundles to be able to make a chrome extension.

If you ask me, application should be separated into logical bundles and modules. It may sound a bit complicated, but let me explain.
For example, we want to build large application, with frontend (landing page), customer dashboard and admin dashboard.
We'll have 3 bundles, let's call them frontend, customer, admin. They are nothing but entry-points, only containing routes. Bundles should be able to reuse code, e.g. frontend will display plans for customers, which is edited/maintained in admin dashboard. Now we're approaching modules.
Module - set of components/reducers/middlewares/actions/etc grouped by logic, e.g. Users, Plans, Notifications, UIKit. Each modules could communicate with each other and also be used by bundles only via single index.js containing all module's exports. Each module should be loaded on-demand, so we separate each bundle and module into it's own chunk.
I would be really happy if we can have current structure as simple application and smth called advanced similar to I've described above. E.g. create-react-app foo creates simple app by default, but if we use create-react-app foo --advanced it would switch to advanced mode.
/cc @gaearon

Hi, using webpack built-in MultiCompiler it is quite easy to run different builds at the same time (including shared cache and quick rebuilding when watching).
In the most basic setup it would use the same index.html template and generate index.html, index2.html and indexanything.html from index.js, index2.js and indexanything.js, with minimal page-specific bundles, but using the same output dirs for assets. That would necessitate changing only a few lines in create-react-app react-scripts. I could send a PR as a discussion point, so we could see how it affects testing, routing etc? Somebody more knowledgeable in create-react-app customs could continue from there.
It might also be possible to configure source templates, output paths, etc, from package.json fields or file system structure (such as src/pages/indexname/index.js), but I would guess that outputting properly to different paths would need more involved changes depending on how paths are handled in build scripts. I could look into this briefly too, if you have opinions on how it should work...

I met the same problem, here is my way, it works :
Four steps to add multiple entry points to create-react-app
(say we add an admin.html):
1. Eject the project
npm run eject

2. Add multiple entry to webpack.config.dev.js
entry: {
    index: [
      require.resolve('react-dev-utils/webpackHotDevClient'),
      require.resolve('./polyfills'),
      require.resolve('react-error-overlay'),
      paths.appIndexJs,
    ],
    admin:[
      require.resolve('react-dev-utils/webpackHotDevClient'),
      require.resolve('./polyfills'),
      require.resolve('react-error-overlay'),
      paths.appSrc + "/admin.js",
      ]
  },
  output: {
    path: paths.appBuild,
    pathinfo: true,
    filename: 'static/js/[name].bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath),
  },

3. Modify HtmlWebpackPlugin
add a new plugin node:
    new HtmlWebpackPlugin({
      inject: true,
      chunks: ["index"],
      template: paths.appHtml,
    }),
    new HtmlWebpackPlugin({
      inject: true,
      chunks: ["admin"],
      template: paths.appHtml,
      filename: 'build/admin.html',
    }),

4. webpack Dev Server
rewrite urls
/config/webpackDevServer.config.js:
    historyApiFallback: {
      disableDotRule: true,
      // 指明哪些路径映射到哪个html
      rewrites: [
        { from: /^\/admin.html/, to: '/build/admin.html' },
      ]
    }

detail: http://imshuai.com/create-react-multiple-entry-points/

Thanks @maoshuai. Works perfectly!

@maoshuai, Worked out well, thanks. Though I had to change the value of filename to 'admin.html', without the build/ like this...
 new HtmlWebpackPlugin({
      inject: true,
      chunks: ["admin"],
      template: paths.appHtml,
      filename: 'admin.html',
    }),

@maoshuai Great solution but doesn't work exactly as expected while running
npm run build
Both HTML files: index.html and admin.html contain the same JS files: index.bundle.js and admin.bundle.js. If you use the same ID in different HTML files (i.e.

) only the last loaded JS will render:
ReactDOM.render(<App />, document.getElementById('root'));
or
ReactDOM.render(<Admin/>, document.getElementById('root'));
.\scripts\build.js should be also modified, unfortunately I'm completely new with React and Webpack. Could someone help?

@Sowed You are right, I had amended it.

Have some effects when change the output file name? The filename is "bundle.js" definitely in react-dev-utils/webpackHotDevClient.js.
https://github.com/facebookincubator/create-react-app/blob/master/packages/react-dev-utils/webpackHotDevClient.js#L36

HI guys. I'm just wonder how you feel about extending webpack.config? Same or similar way as Storybook did it https://storybook.js.org/configurations/custom-webpack-config/? In that way you'll give more power to the end user. I can imagine something like this will kick off creating plugins for react-create-app and it could became quite conflicting. However, I believe this could be handled by some conflict message which warn user whenever overwriting property trying to overwrite already overwritten property. Thanks

@maoshuai What changes might one need to make if using a library and libraryTarget in the webpack output?

Hi guys.
My use case is this:
When I create a new component and I want to actually release it standalone, I still need an app as a testbed/dev environment. One solution would be to use storybook, another - what I do - is create a separate project with create-react-app, and then I have two projects, e.g. my-component and my-component-examples. It works, but it's clumsy.
I'd prefer having src/examples and src/my-component with the ability to build e.g. just the component á la "build": "react-scripts build src/my-component".
By the way, the electron-webpack project has an interesting approach. It's not perfect yet, and it would require quite some hard-wiring inside create-react-app, but: As a user we define a custom webpack config, e.g. in package.json, and that's justthe path to a .js file that simply exports a partial configuration, and under the hood it gets merged via webpack-merge.
What's missing in the electron-webpack approach (as of now) is the abiity to specify the merge strategy from outside, it's using merge.smart automatically so it's easy to add stuff (loaders, entry points), but you cant replace anything.
Anyways, just a suggestion. The ergonomy of that approach is great: As a user, you just use what's provided and don't care, until you do care and add some modifications to the default config.

I also want this since I have multiple applications in my single CRA setup (since I have a lot of shared components). I tried this approach:
import AsyncLoad from './components/AsyncComponent' // this is basically react-loadable

const App = AsyncLoad({ loader: () => import(`${condition? './App1' : './App2'}`) });

ReactDOM.render(<App />,
  document.getElementById('root')
)

The problem is that webpack is bundling this stuff a lot of time. If I do simple imports, it bundles in below a minute.

@themre You could improve that by using compile-time conditional switches. Then webpack won't bundle all possibilities. E.g:
importApp() {
    switch (process.env.MY_CONDITION) {
       case 'App1': return import('./App1');
       case 'App2': return import('./App2');
    }
}

The trick is to have explicit and static imports. I think this should work because Uglify pluin removes dead code after static analysis.

@loopmode you mean the webpackConfig option (as for the custom webpack config file)? I could imagine that the custom webpack file could either export a plain object or a function.
In case of a plain object, that could be merged. In case of a function, that function could receive the current webpack configuration and is expected to return a new webpack configuration. Then you could do whatever you want with your webpack configuration. (webpack itself allows for exporting a function too)

@rmoorman Yes absolutely, that works too. Just receive the config, modify it and return it again. In that case, webpack-merge doesn't even have to be known to create-react-app - we "users" could decide whether we need it or not, as in many cases it would be enough to just modify the given config a little.

Any update on this? Using a similar approach to @tbillington at the moment

@gaearon adding a feature to pass entry point as param to 'react-scripts build' will be a good feature right.
package.json
"build": "react-scripts build",
"build-admin": "react-scripts build src/admin.js",
"build-kiosk": "react-scripts build src/kiosk.js"

or
"build": "react-scripts build",
"build-admin": "react-scripts build --entry src/admin.js",
"build-kiosk": "react-scripts build --entry src/kiosk.js"

build directory
build
├── asset-manifest.json
├── favicon.ico
├── images
├── static
├── index.html
├── admin
│   ├── index.html
├── kiosk
│   ├── index.html

In the meantime, a way around this is to pass through environment variables that determine which file to include for your app and then specify multiple builders in your package.json. eg:
package.json
...
"start": "react-scripts start",
"start-mobile": "REACT_APP_WHICH_APP=mobile npm start",

App.js
switch (process.env. REACT_APP_WHICH_APP) {
  case 'mobile':
    RootScreen = require('./screens/mobile/RootScreen').default;
    break;

  default:
    RootScreen = require('./screens/desktop/RootScreen').default;
    break;
}

export default RootScreen;

Remember your environment variables must begin with REACT_APP_ in order for them to be picked up.

That seems like a totally valid solution, not just a workaround. One could have a file entry.js and use REACT_APP_ENTRY in the switch-case there.

I have a general purpose "App Variants" feature in my fork.  It works like react-native's .ios vs .android, but is configurable, like this:
app/
  package.json
    "targets": { // configure variants
      "ios": {   // configure ios variant
        "jsExts": [".ios.js", ".cor.js"],
        "appHtml": "index.cor.html"
      },
      "android": {   // configure android variant
        "jsExts": [".android.js", ".cor.js"],
        "appHtml": "index.cor.html"
      },
    },
    "scripts": {
      "build": "react-scripts build", // standard build
      "build:android": "TARGET=android react-scripts build",  // build android
      "build:ios": "TARGET=ios react-scripts build"  // build ios
    }
  src/
    App.js
      import comp1 from './comp1'
    comp1.js  // use in standard build
    comp1.android.js // use in TARGET=android build
    comp1.cor.js // common fallback for both ios and android builds
    comp1.ios.js // use in TARGET=ios build
  public/
    index.html // use in standard build
    index.cor.html // use in TARGET=ios and TARGET=android build
  build/  // prod output for standard build
  build_android/  // prod output for TARGET=android build
  build_ios/  // prod output for TARGET=ios build

I'd PR that here if it has any support.

I had the same problem developing Chrome extensions with React, and there is my workaround.

Add additional html file to /public' directory. It has to be almost the same as index.html` except following changes

Change id of root element so for every entry point it has to be uniq

Manually add

@avorobiov This is my favorite approach so far :) This will only work in dev, though, right? (Since /static/js/bundle.js doesn't have a fingerprint in the name.)

For one possible approach - Neutrino has the concept of a mains pref:
https://neutrino.js.org/api/#optionsmains
Which is then used for:

entry point definitions, including pre-pending webpack-dev-server/client
configuring multiple instances of html-webpack-plugin
...and so on.

Whilst we are reluctant to add too many options to Neutrino, making users manually override every case where the entry point is referenced was pretty burdensome, so it seemed worth the trade-off.

Also, neutrino is working on a web-extension preset (module).
The purpose is to build a new work-flow (files organization, start script...) for Web Extension.

@poupapaa I like your solution, so I followed your instruction however in my build/, my index.html is including the css and js for the other page instead of the chunks I specified in the HTMLWebPackPlugin config.
Can you help me? Here's my config-override.js
// config-overrides.js
const paths = require('react-scripts/config/paths');
const path = require('path');
const publicPath = paths.servedPath;
const HtmlWebpackPlugin = require('html-webpack-plugin');

// Define the paths to your javascript & HTML files
// glrl.js should be in your src folder
// glrl.html should be in your public folder
paths.glrlJs = paths.appSrc + '/glrl.js';
paths.glrlHtml = paths.appPublic + '/glrl.html';

// Utility function to replace plugins in the webpack config files used by react-scripts
const replacePlugin = (plugins, nameMatcher, newPlugin) => {
  const pluginIndex = plugins.findIndex((plugin) => {
    return plugin.constructor && plugin.constructor.name && nameMatcher(plugin.constructor.name);
  });

  if (pluginIndex === -1) {
    return plugins;
  }

  const nextPlugins = plugins.slice(0, pluginIndex).concat(newPlugin).concat(plugins.slice(pluginIndex + 1));

  return nextPlugins;
};

module.exports = function override(config, env) {
  // Define the entries for index & glrl
  config.entry = {
    index: [
      require.resolve('react-scripts/config/polyfills'),
      paths.appIndexJs,
    ],
    glrl: [
      require.resolve('react-scripts/config/polyfills'),
      paths.glrlJs,
    ]
  };

  // Split code into chuncks for index & glrl
  config.output = {
    path: paths.appBuild,
    pathinfo: true,
    filename: 'static/js/[name].bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath),
  };

  // Create a HTML entry for index that only includes code for the index bundle
  const indexHtmlPlugin = new HtmlWebpackPlugin({
    inject: true,
    title: 'Double Up',
    chunks: ["index"],
    template: paths.appHtml,
  });

  // Create a HTML entry for glrl that only includes code for the glrl bundle
  const glrlHtmlPlugin = new HtmlWebpackPlugin({
    inject: true,
    title: 'Green Light Red Light',
    chunks: ["glrl"],
    template: paths.glrlHtml,
  });

  // Replace the default HTML entry in the webpack config used by react-scripts with the index HTML entry
  replacePlugin(config.plugins, (name) => /HtmlWebpackPlugin/i.test(name), indexHtmlPlugin);

  // And finally add the second HTML plugin for your glrl page.
  config.plugins.push(glrlHtmlPlugin);

  return config;
};

I did some digging and it looks like replacePlugin function was not able to successfully replace the original config for index.html. Still looking for a solution to override/replace it.

@gaearon

My opinion is this is incredibly convoluted.

Wouldn't enabling custom webpack configuration, maybe using something like webpack-merge be a lot less convoluted way of enabling this (without ejecting or forking CRA)

@poupapaa @carolozar
Hi, can I ask for help? seems I have a problem when building my application, it does not add the "JS" and "CSS" in html inside the build folder, Please see below my code:
const paths = require('react-scripts/config/paths');
const path = require('path');
const publicPath = paths.servedPath;
const HtmlWebpackPlugin = require('html-webpack-plugin');

// Define the paths to your javascript & HTML files
// overriding index to member and add admin
// [name].js should be in your src folder
// [name].html should be in your public folder

paths.adminJs = paths.appSrc + '/admin/index.js';
paths.adminHtml = paths.appPublic + '/admin.html';
paths.appIndexJs = paths.appSrc + '/member/index.js';

// Utility function to replace plugins in the webpack config files used by react-scripts
const replacePlugin = (plugins, nameMatcher, newPlugin) => {
  const pluginIndex = plugins.findIndex((plugin) => {
    return plugin.constructor && plugin.constructor.name && nameMatcher(plugin.constructor.name);
  });

  if (pluginIndex === -1)
    return plugins;

  const nextPlugins = plugins.slice(0, pluginIndex).concat(newPlugin).concat(plugins.slice(pluginIndex + 1));

  return nextPlugins;
};

function rewire(config, env) {
  // check and get portal value: member or admin
  const portal = process.env.REACT_APP_PORTAL || 'member'

  // Define the entries for index & admin
   config.entry = {
    index: [
      require.resolve('react-scripts/config/polyfills'),
      paths.appIndexJs,
    ],
    admin: [
      require.resolve('react-scripts/config/polyfills'),
      paths.adminJs,
    ]
  };

  // Split code into chuncks for index & admin
  config.output = {
    path: paths.appBuild,
    pathinfo: true,
    filename: 'static/js/[name].bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath),
  };

  const htmlTemplates = {
    member: paths.appHtml,
    admin: paths.adminHtml,
  }

  // Create a HTML entry for index that only includes code for the index amd admin bundle
  const htmlPluginConfig = new HtmlWebpackPlugin({
    inject: true,
    chunks: [portal],
    template: htmlTemplates[portal],
  });

  // Replace the default HTML entry in the webpack config used by react-scripts with the index HTML entry
  config.plugins = replacePlugin(config.plugins, (name) => /HtmlWebpackPlugin/i.test(name), htmlPluginConfig);

  return config
}

module.exports = rewire

`

Thank you @poupapaa  for the perfect solution, but I found that the devServer config was not rewritten. By reading the document of react-app-rewired, I found the way to modify devServer config by config-override.js.
Here is my config-override.js
const paths = require('react-scripts/config/paths');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const rewireLess = require('react-app-rewire-less-modules');

// 多页配置：增加入口
paths.appAdminJs = paths.appSrc + '/admin.js';

const replacePlugin = (plugins, nameMatcher, newPlugin) => {
  const pluginIndex = plugins.findIndex((plugin) => {
    return plugin.constructor && plugin.constructor.name && nameMatcher(plugin.constructor.name);
  });

  if (-1 === pluginIndex) {
    return plugins;
  }

  const nextPlugins = plugins.slice(0, pluginIndex).concat(newPlugin).concat(plugins.slice(pluginIndex + 1));

  return nextPlugins;
};

module.exports = {
  webpack: (config, env) => {
    if ('development' === env) {
      config.entry = {
        index: [
          require.resolve('react-scripts/config/polyfills'),
          require.resolve('react-dev-utils/webpackHotDevClient'),
          paths.appIndexJs,
        ],
        admin: [
          require.resolve('react-scripts/config/polyfills'),
          require.resolve('react-dev-utils/webpackHotDevClient'),
          paths.appAdminJs,
        ]
      };
      // 多页配置：区分开入口文件
      config.output.filename = 'static/js/[name].bundle.js';

      const indexHtmlPlugin = new HtmlWebpackPlugin({
        inject: true,
        template: paths.appHtml,
        // 多页配置：2.x 版本默认开启 optimization ，chunks 中需要增加 'vendors', 'runtime~admin'
        chunks: ['vendors', 'runtime~index', 'index'],
        filename: 'index.html',
      });
      const adminHtmlPlugin = new HtmlWebpackPlugin({
        inject: true,
        template: paths.appHtml,
        chunks: ['vendors', 'runtime~admin', 'admin'],
        filename: 'admin.html',
      });
      // 多页配置：
      config.plugins = replacePlugin(config.plugins, (name) => /HtmlWebpackPlugin/i.test(name), indexHtmlPlugin);
      config.plugins.push(adminHtmlPlugin);
    } else {
      config.entry = {
        index: [require.resolve('react-scripts/config/polyfills'), paths.appIndexJs],
        admin: [require.resolve('react-scripts/config/polyfills'), paths.appAdminJs],
      };
      const indexHtmlPlugin = new HtmlWebpackPlugin({
        inject: true,
        template: paths.appHtml,
        minify: {
          removeComments: true,
          collapseWhitespace: true,
          removeRedundantAttributes: true,
          useShortDoctype: true,
          removeEmptyAttributes: true,
          removeStyleLinkTypeAttributes: true,
          keepClosingSlash: true,
          minifyJS: true,
          minifyCSS: true,
          minifyURLs: true,
        },
        chunks: ['vendors', 'runtime~index', 'index'],
        filename: 'index.html',
      });
      const adminHtmlPlugin = new HtmlWebpackPlugin({
        inject: true,
        template: paths.appHtml,
        minify: {
          removeComments: true,
          collapseWhitespace: true,
          removeRedundantAttributes: true,
          useShortDoctype: true,
          removeEmptyAttributes: true,
          removeStyleLinkTypeAttributes: true,
          keepClosingSlash: true,
          minifyJS: true,
          minifyCSS: true,
          minifyURLs: true,
        },
        chunks: ['vendors', 'runtime~admin', 'admin'],
        filename: 'admin.html',
      });
      // 多页配置：替换 index.html 生成规则
      config.plugins = replacePlugin(config.plugins, (name) => /HtmlWebpackPlugin/i.test(name), indexHtmlPlugin);
      // 多页配置：添加 plugin 生成 admin.html
      config.plugins.push(adminHtmlPlugin);
    }
    return config;
  },
  devServer: (configFunction) => {
    return (proxy, allowedHost) => {
      const config = configFunction(proxy, allowedHost);
      // 多页配置： 指明哪些路径映射到哪个html
      config.historyApiFallback.rewrites = [
        { from: /^\/admin.html/, to: '/build/admin.html' },
      ];
      return config;
    };
  },
};

Hi!  Willing to submit a PR if this looks about right to you, but I understand if there are some concerns about introducing a vendor.js alongside n number of entry points. Either way, we should talk it out. Looking for some guidance before committing too much time into this.
This also opens up a whole new topic/concern about bundle optimization and if we want CRA to have any of that at all. If we did, I might suggest a similar setup to what we use at Nordstrom Rack | HauteLook, which provides the following bundles:

vendor.js all 3rd-party code from the node_modules folder. Large file, but cached and very rarely changes.
common.js contains common chunks of business code between multiple entry points. Changes pretty much every deploy, but not likely to be near as big as vendor.js.
<entry-point>.js contains mostly code specific only to that entry point. Should be a pretty small file and only changes if that entry point has been changed.

The webpack configuration should look something like this:
// webpack.config.babel.js
import { compact, keys } from 'lodash';

const isDev = NODE_ENV === 'development';

export default {
    plugins: compact([
        isDev && new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor',
            minChunks: 3,
        }),
        !isDev && new webpack.optimize.CommonsChunkPlugin({
            name: 'common',
            chunks: keys(browserMainEntries),
            minChunks: 3,
        }),
        !isDev && new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor',
            chunks: ['common'],
            minChunks: isExternal,
        }),
    ]),
}

function isExternal({ context }) {
    return context && context.indexOf('node_modules') !== -1;
}

@GAumala @lepture since we also want to change the index html can we change like this?
20a21
> const envEntryPoint = process.env.ENTRY_POINT || 'index';
82,83c83,84
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),
104,105c105,106
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),

This could work with naming convention, as it does now.
index.js --> Normal single entry
*.entry.js -> Multiple entrypoints.

In case you run into this problem trying to build a chrome extension (and need eg. an options.html and a index.html), here is what worked for me:
I just appended a hash to the index.html and "route" to the correct view in App.js. Something like:
  "manifest_version": 2,
  "name": "Random",
  "version": "1.0.0",
  "options_page": "index.html#options",
...
  "browser_action": {
    "default_popup": "index.html#popup"
  },```

Happy New Year! (and soon Chinese New Year)
I've been watching this issue for a while, and I can see there's a couple workaround. Which one is the "recommended" way (as in, future proofing in line with CRA direction)?

@wiradikusuma I do think there is no "recommended" way as long as the feature is not provided natively. The solution you chose, depends always on your requirement and the purpose of the app.
There are a lot of good solutions in this discussion here. Thanks to all of you!

A different use case than what was described here before: we need (and forked to get) a second entrypoint for our service worker.
The current SW approaches (with workbox and plugins) is seriously crippled for any real service worker logic (BackgroundSync, push notifications, etc). By having an additional entrypoint you gain the same Typescript stack, code sharing, etc.
@gaearon I agree that it's a complicated use case, but the point of great tools is to be simple at first and let you access more expert-y features when you need them. I really wished there was an other way than forking, SW are an advanced feature, but fiddling with react-scripts and maintaining your fork afterwards is a whole different game.

Since your fork is now up and running, maybe Facebook maintainers will accept a pull request?

Our fork is pretty much "make it work" for our use case, definitely not "make it right". There would be multiple other concerns for inclusion in a project like CRA (docs, tests, ), I'm not sure a PR with our minimal modifications would be needed.
That being said, feel free to use it, or be inspired from it, it's available at https://github.com/ouihelp/create-react-app/pull/4/files - and you can also try it with:
yarn create react-app sw-entrypoint-test-app --typescript --scripts-version @ouihelp/react-scripts

vue-cli has the feature with pages

Just wanted to post an alternate requirement for multiple entry-points that isn't the normal "User" app and "Admin" app thing.
Implementing "Silent Authentication" with an identity provider such as Auth0:  https://auth0.com/docs/api-auth/tutorials/silent-authentication
You definitely don't want the silent-auth redirect loading a lot of code.  But at the same time there are definitely a few things you do (or at least I do) want to share at a code level (post target, etc.) without having to go all the way to defining those shared parts as configuration or even factoring out a whole external library.
I'm fine with ejecting being the solution to this - just wanted to mention it as a use-case of this feature for future consideration.

I think it's obvious that most of the people want a config file at project root to overwrite specific keys of react-scripts' Webpack configuration (and leave leave the rest as they are) - without ejecting or forking the whole entity of react-scripts. Is that really such a challenge?
I mean... This could also be in your (Create React App team) interest, when you look at this:   https://github.com/facebook/create-react-app/issues?utf8=✓&q=is%3Aissue+webpack
At least 1/3 of all issues are related to Webpack.

We had to build an admin / portal apps and did not want to come up with two different projects as this requires extracting common components into third project, which complicates the entire stack.
As create-react-app is a single app build system, we came up with the following solution:
Assuming you have two entry points admin & portal, we simply maintain two entry point files (instead of the default index.js), so we have:

src/admin.js
src/portal.js

then we we have a simple switch-entrypoint command that does:
# replace "homepage" property in package.json
sed -i '' -e 's/\("homepage": \)\(.*\)/\1"\/${ENTRYPOINT}",/' package.json
# override index.js with the correct entry point
cp src/${ENTRYPOINT}.js src/index.js

for those who's using Makefile, here's an example
Advantages:

No eject
Simple and clean

"Disadvantages":

Two build folders
Cannot start single dev server for both projects

I personally see the "Disadvantages" as a positive thing as IMO we should treat our different entry points as isolated apps.
Thanks

Here is an example CRA with multiple entries without ejecting.
Basic idea is to symlink desired entrypoint to index.js on start and build, and you can have how many you want, in a single app.
https://github.com/iamandrewluca/cra-multiple-entries/pull/3

Looking at PR 5671 (which was closed because nobody reviewed it) seemed like small change to support output to multiple html files.
I'm admittedly new to the CRA stack. But I'm surprised to see this issue about multiple entry points limping along for over two years. Is this not a common problem, or, are most folks only building small-sized apps with this framework?
Isnt there just some sort of a "safety valve" placeholder one can add into webpack to support modifications/overrides to support something like 5671

Does anyone have an example working for v3.2.0?

Or you could just use react-router-dom
Example:
https://reacttraining.com/react-router/web/example/url-params

This package https://github.com/Derek-Hu/react-app-rewire-multiple-entry worked flawlessly for me and we have a non standard CRA setup.

I successfully workaround this using dynamic import and React lazy loading of main component, might want to see in this gist
This way, while the entry point is still the unswitchable index.js, main component loaded by it can still be switched using environment variable.

Just so everyone's clear, switching the entry point via environment variables or otherwise does not actually solve the problem of not having multiple entry points. With actual multiple entry points, you can optimize the bundles via webpack such that scripts are shared between bundles in an efficient way. You get none of this with only a single entry point, because webpack doesn't have the whole picture.

Having to follow the project structure is just too funny. I'm ejecting CRA at this point.

@jedmao I get your point, I even have an example where this would be useful.
We have a project where it has 5 frontend modules. Each module share same library also created internaly as living style guide. Would be great when building all 5 modules, they would share, common dependencies like, react, react-dom, bootstrap, reactstrap, our living style guide, and more dependencies.

And you can do exactly that. You just need to eject and tweak your webpack configuration. It works beautifully.

And you can do exactly that. You just need to eject and tweak your webpack configuration. It works beautifully.

The supposed benefit of CRA is having the easy path of React development without needing to tweak configurations. Using CRA is very streamlined in that it allows seamless upgrade of try-and-tested best practice configuration. Most boilerplate is clone-once-then-orphan from its upstream repo, that cannot be easily upgraded with NPM. Ejecting CRA and tweak sounds great, except when you have a lot of repo/app you need to maintain, each of them might need update every once in a while. Allowing customization without ejecting is opening CRA for much wider use cases. If you're suggesting ejecting, everything becomes possible but you're defeating the purpose of easy maintenance of CRA bootstrapped app. If ejecting is already desired, I think we won't be here asking for these features.

I agree, but considering the complexity of just blindly adding more entry points without accounting for your specific bundling needs, which will 100% need tweaking, I think the real solution here is to make this aspect and the ability to tune bundles both configurable in a CRA.
Understanding that making CRA configurable is not yet within the design goals of CRA, ejecting is the only viable option.

I recently encountered a similar scenario where I'd like multiple entries points and stumbled onto this issue. I'm glad to see it's still active and under discussion. I've been hesitant to eject, but I understand there is a lot of complexity with CRA managing user defined entry points.
Reading through the comments I was able to hack together a solution that should code split and bundle assets by combining the solution from @carruthe and @benedictjohannes.
Disclaimer I will be ejecting and not using this solution, but I wanted to go ahead and post it for others if they wanted to discuss the advantages and disadvantages of this approach. I've enjoyed reading through all of the creative solutions on this thread.
By combining dynamic imports and url  parsing here is the solution I have working locally without ejecting.
import React, { lazy, Suspense } from 'react';
import ReactDOM from 'react-dom';
import Parser from './parser'; // Parser is a URL parser to extract the example parameter.

// Parses the browser url for the example parameter value.
const { example } = Parser.parse();

const Example = lazy(() => import(`./Example${example || 3}`));

const App = () => (
  <Suspense fallback={
Loading...
}>
    <Example />
  </Suspense>
);

ReactDOM.render(<App />, document.getElementById('root'));

Source code here: https://github.com/StephenEsser/example-code-splitting
Example demo here: https://stephenesser.github.io/example-code-splitting/
The url parser algorithm is from here
Dynamic Imports information can be found here.

Hi @gaearon
Could you please share you thought on what could be the best way for doing this on CRA 3.3.0?

I met the same problem, here is my way, it works :
Four steps to add multiple entry points to create-react-app
(say we add an admin.html):
1. Eject the project
npm run eject

2. Add multiple entry to webpack.config.dev.js
entry: {
    index: [
      require.resolve('react-dev-utils/webpackHotDevClient'),
      require.resolve('./polyfills'),
      require.resolve('react-error-overlay'),
      paths.appIndexJs,
    ],
    admin:[
      require.resolve('react-dev-utils/webpackHotDevClient'),
      require.resolve('./polyfills'),
      require.resolve('react-error-overlay'),
      paths.appSrc + "/admin.js",
      ]
  },
  output: {
    path: paths.appBuild,
    pathinfo: true,
    filename: 'static/js/[name].bundle.js',
    chunkFilename: 'static/js/[name].chunk.js',
    publicPath: publicPath,
    devtoolModuleFilenameTemplate: info =>
      path.resolve(info.absoluteResourcePath),
  },

3. Modify HtmlWebpackPlugin
add a new plugin node:
    new HtmlWebpackPlugin({
      inject: true,
      chunks: ["index"],
      template: paths.appHtml,
    }),
    new HtmlWebpackPlugin({
      inject: true,
      chunks: ["admin"],
      template: paths.appHtml,
      filename: 'admin.html',
    }),

4. webpack Dev Server
rewrite urls
/config/webpackDevServer.config.js:
    historyApiFallback: {
      disableDotRule: true,
      // 指明哪些路径映射到哪个html
      rewrites: [
        { from: /^\/admin.html/, to: '/build/admin.html' },
      ]
    }

detail: http://imshuai.com/create-react-app-multiple-entry-points/

When I try this approach, I'm getting the following error:
Cannot read property 'filter' of undefined

Customize-cra changed its configuration after upgrading to 2.x. Here is an example you can refer to the following：https://github.com/goblin-laboratory/cra-multi-page-template

@DanZeuss
Customize-cra changed its configuration after upgrading to 2.x. Here is an example you can refer to the following：https://github.com/goblin-laboratory/cra-multi-page-template

A functional example of create-react-app V3 working with multiple entry points: https://github.com/DanZeuss/create-react-app-multiple-entry-points

@DanZeuss can you split changes into different commits, so we can see what you changed?

Initial app commit
App ejected*
Your chagnes

@DanZeuss

When I try this approach, I'm getting the following error:
Cannot read property 'filter' of undefined

the 'filter' error is caused by:
      new ManifestPlugin({          // ......original code        }),
modify them:
      new ManifestPlugin({
        fileName: "asset-manifest.json",
        publicPath: publicPath,
        generate: (seed, files, entrypoints) => {
          const manifestFiles = files.reduce((manifest, file) => {
            manifest[file.name] = file.path;
            return manifest;
          }, seed);
          const _entrypoints = Object.values(entrypoints).reduce(
            (total, cur) => [...total, ...cur],
            []
          );
          const entrypointFiles = _entrypoints.filter(
            fileName => !fileName.endsWith(".map")
          );
          return {
            files: manifestFiles,
            entrypoints: entrypointFiles
          };
        }
      }),

and it works well.

Hi, any update on this four year issue? Multiple entry-points are an absolute must in security perspective.

security perspective.

What do you mean?

As @DanZeuss mentioned in #8249

My intention with this implementation is to allow the user add multiple entry points assuming that it’s going to generate separate bundles for each entry point.
Why?
Because security. Let’s me introduce a scenario for you to understand my point. There is an application that is defined to work with many security best practices. One for example is to not allow the user have access to the application and all content related to it (JavaScript files, images, html, etc) without being authorized through login. The user may have access only after logged in.
It’s to avoid the user have access to (included) JavaScript file/app and try to get some way to perform something the the user shouldn’t (understanding the code and injecting something, for example)
With this approach implemented, we can serve different apps in order to not have the whole application in a single file. It also avoids the user to have 2 separate (cra) applications for this purpose. This also avoid the user to eject cra and lose all benefits of it, including th futures one.
So, I hope we can reach a deal, but, independent our deal, it also needs the approvals from the reviewers, which maybe are offline for now. But I really hope to get a feedback from them.
Stay blessed

Hello,
I wanted to implement multiple entry points in my application, Do we have some clear example/link which will be helpful, I am new to webpack and do not have thorough knowledge of it.

Actually react-scripts configures bundler to support automatic multiple entry points out from the box. It splits bundle for chunks even when you do nothing special. You seen 0.chunk.js and so on? This is splittings for small chunks, it is already here (with some automatic splittings criteria).
If you want to provide some help to bundler to make it better understand the structure of your application, - then you can directly use asynchronous chunk loading for some components with something like react-loadable.
Multiple entry points allow you fully separate some code from anther to make two different app with different exclusive parts. Usually this is significantly different applications. For such case I use different create-react-app projects. Shared (library) code is in common project and multiple src dir with alias is used to its integration.

@harshalpandey, I know this is a really long thread, so maybe you missed it in the collapsed comments, but I hope this comment is what you're looking for.
I spent a lot of time with the webpack bundle analyzer to ensure it was a highly optimized configuration; however, it does require ejecting a CRA. You might have to play with the minChunks values until the bundle analyzer shows you what you're looking for, which should be:

A big vendor.js file (contains mostly node_modules).
A smaller common.js file (contains mostly header, nav and footer code, shared between most pages on your site).

According to the image, it is noticeable to the naked eye that the largest area is occupied by the localization of moment and lodash.
This indicates an incorrect assembly. Localizations (including moment) are definitely not needed in budnle, only one is used in the application. They must be assebled separately, here is an example [intl-webpack-plugin] (https://oklas.github.io/component-intl-example/)
I have not met a situation where lodash would be needed at all. Neither in my projects or in which I had to work. The es allows you to make a lot of things. Someones even struggle to avoid lodash. Nevertheless, if you really want to take something from lodash, you should use individual imports and not drag all existing code to the client.
Regarding everything else, based on these two examples above, it should be more interesting not how the bundle is assembled, but the app coverage. That is, how much code in the bundle really executes in the application (and recuired to be in bundle).

That image is from 2015, so take it for what it's worth 😄

The mentioned questions is not related to the year and bundle version. It is application configuration and with same errors it will be bundled same way today (as before).

@oklas his point was to show how app bundle can be splitted, not what actually is included in bundle
This weekend I experimented with angular-cli. They have a config, where you can add multiple projects
e.g.

For each project you can configure a lot of options
e.g

Maybe react-scripts should start moving to use this aproach maybe, to have a config file.

Hello Guys,
Thanks a lot for your reply, But I am still not clear about the implementation with react application.
Let me try to tell you the exact use case of what exactly I want to achieve in my application.
Basically I need two entry points in the application one for the mail application and another is for the admin panel.
For Ex.
localhost:3000/app - it should run the main application.
localhost::3000/adminApp - it should run the application which will only be having menus that are related to admin.
Please let me know what is the exact solution I can use which will resolve my problem.
if something other then multiple entry points we can do to achieve this without ejecting the application that will also be fine.

import Loadable from 'react-loadable'
import Loading from './my-loading-component'
import {BrowserRouter as Router, Switch, Route} from "react-router-dom"

const LoadableApp = Loadable({
  loader: () => import('./my-app'),
  loading: Loading,
});

const LoadableAdmin = Loadable({
  loader: () => import('./my-admin'),
  loading: Loading,
});

const App = () => (
  <Router>
    <Switch>
      <Route path="/app"><LoadableApp/></Route>
      <Route path="/admin"><LoadableAdmin/></Route>
    </Switch>
  </Router>
)

My situation I have my main App.js using index.html but I also have chromecast-receiver.html for Google Chromecast application, I can't figure out a way to build and bundle my Chromecast App with CRA

@oklas
Thanks for your solution.
I have one doubt/question. The solution which you have mentioned in which we are anyway using React Routes.
So after deploying build of my application on the server.
if I run my application and hit URL https://example.com it will initiate the route and then I can hit any of the URL (/app , /admin), and accordingly, it will load the related component.
But If I directly hit the URL https://example.com/app or https://example.com/admin , I think it will search for app or admin directory in my build folder and it will give me an error that
Not Found
The requested URL /app was not found on this server.
Do we have any solution for this?

@harshalpandey when having a SPA, in most of cases server should return index.html when no request handler found.

You could do something funky with shell scripting. Not sure how practical this is but it will solve your problem (from how I interpret it).
Have two entry point js files, lets go with user.js and admin.js.
Have two build commands in package.json; build-user, build-admin.
When you go to run build-user, before running react-scripts build, have some shell code that copies user.js to index.js in your source code. Same for build-admin, just copy it's entry point to index.js before running the actual build command. This way if you're working on the same entry point consistently, you can still use build.
package.json
"build": "react-scripts build",
"build-user": "cp src/user.js src/index.js && react-scripts build",
"build-admin": "cp src/admin.js src/index.js && react-scripts build"

this sadly is still the best solution to avoid to eject
maybe is possible to use https://github.com/timarney/react-app-rewired/ and use some webpack plugin / configuration?

any recommendation for me?

ugh, let me throw another one at u guys...
Electron application where you want 'modals', or, components in different windows, and you want said windows written in React. I have to pass different html files to electron, and it would be awesome if I could have multiple entry points because then my project looks like
/public
index.html
modal.html
/src
/features
/app
/modal
index.js
modal.js
It seems to be a real pain to acheive this without ejecting and knowing everything about webpack

You could do something funky with shell scripting. Not sure how practical this is but it will solve your problem (from how I interpret it).
Have two entry point js files, lets go with user.js and admin.js.
Have two build commands in package.json; build-user, build-admin.
When you go to run build-user, before running react-scripts build, have some shell code that copies user.js to index.js in your source code. Same for build-admin, just copy it's entry point to index.js before running the actual build command. This way if you're working on the same entry point consistently, you can still use build.
package.json
"build": "react-scripts build",
"build-user": "cp src/user.js src/index.js && react-scripts build",
"build-admin": "cp src/admin.js src/index.js && react-scripts build"

this sadly is still the best solution to avoid to eject
maybe is possible to use https://github.com/timarney/react-app-rewired/ and use some webpack plugin / configuration?

I have to keep pointing out that this is NOT a solution, as it eliminates the possibility of bundle optimizations between entry points. If that doesn't matter to you, then I suppose it's an OK solution. Just don't want to lead anyone astray here.

Maybe owners should add the repo on issuehunt. To collect donations for most wanted features.

lol, 'eh'
My solution was:
use react-app-rewired
Config for anyone who needs it in the future
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ManifestPlugin = require('webpack-manifest-plugin');

const path = require( 'path' )

module.exports = {
  webpack: ( config, env ) => {
    // We need a way to transpile web workers so we can use them within react,
    // so it was necessary to override the default webpack config. This may
    // not be necessary in the future
    config.module.rules.push({
      test: /\.worker\.js$/,
      use: { loader: 'worker-loader' }
    })

    // We also need a way to use node modules in web workers, so we override the
    // default target to electron-renderer
    config.target = 'electron-renderer';

    //  Push the other html page
    config.plugins.push( new HtmlWebpackPlugin( {
      inject: true,
      chunks: ["test"],
      filename: 'test.html',
      template: path.join( __dirname, 'public', 'test.html' ),
    } ) )

    //  Tell React Dev server to use other names than main
    config.plugins.push( new ManifestPlugin( {
      fileName: 'asset-manifest.json',
      publicPath: '/',
      generate: (seed, files, entrypoints) => {
        const manifestFiles = files.reduce((manifest, file) => {
          manifest[file.name] = file.path;
          return manifest;
        }, seed);
        // Previous code
        // const entrypointFiles = entrypoints.main.filter(
        //   fileName => !fileName.endsWith('.map')
        // );
        const entrypointFiles = {};
        Object.keys(entrypoints).forEach(entrypoint => {
          entrypointFiles[entrypoint] = entrypoints[entrypoint].filter(fileName => !fileName.endsWith('.map'));
        });
        return {
          files: manifestFiles,
          entrypoints: entrypointFiles,
        };
      },
    } ) )

    //  Necessary for some reason I don't entirely know
    config.output['globalObject'] = 'this';
    return config
  },
  jest: ( config ) => {
    return config
  },
  devServer: ( configFunction ) => {
    return ( proxy, allowedHost ) => {
      const config = configFunction( proxy, allowedHost )
      return config
    }
  },
  paths: ( paths, env ) => {
    return paths
  }
}

My solution is:
script on package.json
    "dev": "react-scripts start",
    "dev:admin": "REACT_APP_MODE=admin  react-scripts start",

and index.js
import React from 'react'
import ReactDOM from 'react-dom'
import CustomerApp from './App'
import AdminApp from './AdminApp'

const App = process.env.REACT_APP_MODE === 'admin' ? AdminApp : CustomerApp

ReactDOM.render(
  <React.StrictMode>
      <App />
  </React.StrictMode>,
  document.getElementById('root')
)

this is the patch I have been using
20a21
> const envEntryPoint = process.env.ENTRY_POINT || 'index';
82,83c83,84
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),
104,105c105,106
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),

so I can do
ENTRY_POINT=index yarn build
ENTRY_POINT=index2 yarn build
ENTRY_POINT=index3 yarn build
``

this is the patch I have been using
20a21
> const envEntryPoint = process.env.ENTRY_POINT || 'index';
82,83c83,84
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),
104,105c105,106
<   appHtml: resolveApp('public/index.html'),
<   appIndexJs: resolveModule(resolveApp, 'src/index'),
---
>   appHtml: resolveApp('public/' + envEntryPoint + '.html'),
>   appIndexJs: resolveModule(resolveApp, 'src/' + envEntryPoint),

so I can do
ENTRY_POINT=index yarn build
ENTRY_POINT=index2 yarn build
ENTRY_POINT=index3 yarn build

Perfect, i hope it won't broke in the future

Another use case for this is when you have a mostly static site and you want to add bits of React here and there while being able to take advantage of webpack and keep the bundles separate.
For example, if you have a React form on the homepage of mysite.com and you also want React to handle a list of FAQs at mysite.com/faq, you don't want users visiting the FAQ page to load a bundle containing code that is not relevant.
I can understand if this is out of scope for CRA though.

My use case for multiple entry points is implementing an OpenID Connect silent login in an iframe. The second entry point for the applications is a light weight page that is the result of the login redirect, and communicates with the main page via postMessage. This could be done as an application route or similar, but redirecting to a /silent_renew.html that loads just enough JS to communicate feels a lot cleaner to me than redirecting to /silent_renew that is a HTML5 route in the main application.

Well. CRA is aiming at SINGAL page Apps, but soon you'll find the js is too
git to fit in one page, so split into multiple pages would be a good idea
and all pages could re-use the same login form component etc.
I use a patched version like Vitaly above. Hope this would be implemented
as a standard feature.
On Sun, Oct 11, 2020 at 9:17 AM Nicholas Steicke<EMAIL_ADDRESS>wrote:

My use case for multiple entry points is implementing an OpenID Connect
silent login in an iframe. The second entry point for the applications is a
light weight page that is the result of the login redirect, and
communicates with the main page via postMessage. This could be done as an
application route or similar, but redirecting to a /silent_renew.html
that loads just enough JS to communicate feels a lot cleaner to me than
redirecting to /silent_renew that is a HTML5 route in the main
application.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/facebook/create-react-app/issues/1084#issuecomment-706634216,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAHVBEFVPTFKAJNNCK6OOLSKEBRZANCNFSM4CXDVI2A
.

--
About: http://about.me/dujinfang
Blog: http://www.dujinfang.com
Proj:  http://www.freeswitch.org.cn

Fort this, you could be using code splitting

Em 10 de out. de 2020, à(s) 22:12, Francesco Truzzi<EMAIL_ADDRESS>escreveu:

Another use case for this is when you have a mostly static site and you want to add bits of React here and there while being able to take advantage of webpack and keep the bundles separate.
For example, if you have a React form on the homepage of mysite.com and you also want React to handle a list of FAQs at mysite.com/faq, you don't want users visiting the FAQ page to load a bundle containing code that is not relevant.
I can understand if this is out of scope for CRA though.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Fort this, you could be using code splitting

There is an example above

I found this post that may help some people with this issue. It seems to work for me.
https://blog.logrocket.com/multiple-entry-points-in-create-react-app-without-ejecting/
"TL; DR
You can create multiple entry points in a CRA application without ejecting by using an environment variable to conditionally import container files. Doing this prevents code from the other containers appearing in the desired bundled build."

I did it using https://github.com/Derek-Hu/react-app-rewire-multiple-entry in the end.
Thank you @danvc and @oklas for the tip, but I wanted to avoid using react-router if possible.

@ftruzzi looks at this example that I've implemented (without external modules):
https://github.com/danvc/create-react-app-multiple-entry-points

Hello, guys, what about using React in chrome extension development?
There's no appHtml, but a content script entry which defined in manifest.json.
  "content_scripts": [{
    "matches": "<all_urls>",
    "js": ["./static/js/content.js"]
  }]

Since the create-react-app project has only one public/index.html, and a single src/index.js as js entrance, I use the following solution for multiple-page project.

<doctype html>

  <%= require("src/partials/getPageTemplate.js")(pageVariable) %>

// src/partials/getPageTemplate.js
module.exports = (appType) => {
  if( appType === appEnum.admin ){
    return `<div>Admin...</div>`
  }
}

// src/index.js
(async () => {
  if( process.env.APP = appEnum.admin ){
    await import("./admin")
  } else if( process.env.APP = appEnum.toolset ){
    await import("./toolset")
  }
})()

Hey @yarcowang did you manage to get this to work? Im trying to add two different content scripts (one uses all_frames, other one doesnt), but I cant seem to get it to work. Any ideas?

@ThisIsntPatrick4312 I'm using vite to manage the project, https://stackoverflow.com/questions/70522494/multiple-entry-points-in-vite, it seems simple to me.


about trackId

Hello,  the label in the sample does not have trackId. Could you provide the label with trackid if I apply for the dataset? and there are also no images and liDAR data in the dataset, will it be provided in the future?

We have released the images, radar data, and tracking labels.


[FEATURE]: Cassandra/CQL support

Describe what you want
Is there any information regarding the status or plans to support Cassandra/CQL?

Since Cassandra is not a relational database, we do not have any plans to support it in the foreseeable future.


Docs should use lower-case input here

https://github.com/pivotal-cf/docs-pks/blob/a358982d858201014d4e8783d6a03de53a62482b/gcp-prepare-env.html.md.erb#L63
Network names need to be lower-case.  If you type in "MY-PKS-virt-net" as instructed it errors with Name must be lowercase letters, numbers, and hyphens

Hey @dyozie, thanks for calling this out! I updated this example and added a note to clarify that network names must be lower case.


Add secrets baseline

Checklist

[x] Tick to sign-off your agreement to the Developer Certificate of Origin (DCO) 1.1
[x] Added tests for code changes or test/build only changes
[x] Updated the change log file (CHANGES.md|CHANGELOG.md) or test/build only changes
[x] Completed the PR template below:

Description
Add .secrets.baseline
Approach
Mark false positives and exclude package-lock.json and test/fixtures/* from secret checks because they contain lots of shas.
Schema & API Changes

"No change"

Security and Privacy

"No change"

Testing

N/A build or packaging only changes

Monitoring and Logging

"No change"

What wiremock stubs?

What wiremock stubs?

never-mind, I was in a generated mindset when reviewing.


Feature request: Allow check data to be ingested on the client socket for other hosts

In our infrastructure we have many "pseudo-clients" which represent entities in our infrastructure that do not map to a host running a Sensu client instance.  For example this could be an aggregate entity which represents a group of servers, or a cluster of microservices which provide a services but do not correlate to any specific client.  To feed this data into Sensu I currently need to queue messages into RabbitMQ directly.  This is suboptimal for several reasons:

It requires my check to know all the Rabbit configuration settings, which includes usernames, passwords, and SSL certs
It requires my check to know the Sensu RabbitMQ message format

It would be very nice if I could send a message to the client socket with a message for a different client.  This is currently blocked by sensu-client hard setting the client in the message: /lib/sensu/client/socket.rb#L147
Looking at the RabbitMQ payload I'm not sure how to best address this, as the format appears to be:
{
   "client": "Client name in question",
   "check": "validated socket payload"
}

As the field in question is a level above the current data structure accepted on the socket it makes this a difficult proposition.  As the socket supports commands like 'ping' perhaps a command that specifies the payload is the full message to be verified and sent to the transport, not just the check block?  That will allow this flexibility while allowing bare JSON to behave the same for backwards compatibility.  Please let me know your opinions and if Sensu is open to this approach, I'd like to discuss before starting a PR.  Thanks.
EDIT: Been coding too much Ruby, used single quotes in my JSON

Hi @CVTJNII, thanks for opening this issue. If I understand your request correctly, I believe that [proxy client] (https://sensuapp.org/docs/latest/reference/clients.html#proxy-clients) functionality -- already present in Sensu -- provides what you are describing. By specifying a source attribute in the check result sent to the Sensu client socket, those results will be correlated with the specified source.
Please have a look at the client reference documentation linked above and let me know if this doesn't meet your needs?

Oh, so it is.  Sorry I missed that.  One thing I'm not clear on from that, though, is where is that payload sent?  The Sensu API?

I'm sorry, but I'm still not clear.  When I send the following payload to the socket:
echo '{"client": "sensu-docs", "check": {"name": "test", "output": "Test", "status": 0}}' | nc localhost 3030

Sensu logs the following error:
{"timestamp":"2016-11-21T17:36:08.978424+0000","level":"error","message":"failed to process check result from socket","data":"{\"client\": \"sensu-docs\", \"check\": {\"name\": \"test\", \"output\": \"Test\", \"status\": 0}}\n","error":"check name must be a string and cannot contain spaces or special characters"}```

This makes sense, as looking over the socket code in https://github.com/sensu/sensu/blob/caf798528af9e9cab1e1d05ea7059d6c165b60e5/lib/sensu/client/socket.rb#L200-L219 I don't see any handling of proxy clients, just the normal socket handling.  This error is coming from https://github.com/sensu/sensu/blob/caf798528af9e9cab1e1d05ea7059d6c165b60e5/lib/sensu/client/socket.rb#L122-L124 which fails as the name key isn't set in the proxy payload base scope.

So I'm not clear at all on how to use Proxy clients, please advise.

I was reading but not comprehending.  The "source" key in the socket payload apparently overrides the "client" key I've been referencing in the code.  The following seems to be doing what I want:
echo '{"source": "test", "name": "test", "ttl": 30, "output": "Test", "status": 0}' | nc localhost 3030

Thanks for the pointer!


Switch modules update

merge to replace - For most of the usecases merge is good enough but certain edge cases
might be effected due to certain configuration. changed some merge
statments to replaced.
allow reusing ae members

/approve


Gate staticized, unitarized during gate reassignment

Describe the bug
When you reassign an explicit model’s fully parameterized gate to that same gate times the dense identity matrix, it somehow makes the resulting gate stored in the model a static unitary gate.
To Reproduce
MWE-GateAssignmentStaticizesAndUnitarizesGate.ipynb.zip
Expected behavior
The gate remains fully parameterized.

Closed with release of 0.9.12.


Debugger does not attach

Steps to reproduce
Steps from the Wiki Article "how to debug"
Issues
I just cannot attach the debugger. I did everything explained and was sure to download the 64bit .dll file. I followed the steps of the video. Deactivated Mods and Battleeye etc.
Expected
After I loaded my mission where my script is running in I expected the debugger to be able to attach. But always the error msg appears.

What is "the error msg" and where did you get the debugger dll from?

All Infos from here: https://github.com/ArmA-Studio/ArmA.Studio/wiki/Install-and-use-ArmA.Studio

if you got the debugger from there then yeah. Won't work
BI broke the debugger back when Arma.Studio development came to a halt.
The Debugger is currently being updated but doesn't work with the current latest Arma.Studio. A VS Code plugin is in the works.

So I just have to wait for a new release?

If you want the debugger in Arma.Studio yeah. But currently it's unlikely that Arma.Studio will get a new release. The VS Code debugger plugin will probably be done sooner

Unless interest is somehow again generated, I have to agree
Fairly unlikely

Alright I got you then


how to import Elasticsearch Vietnamese Analysis eclipse

I don't know import library Elasticsearch Vietnamese Analysis to  Eclipse. pls help me!

I use Maven to build this plugin so you can import this project as a maven project into Eclipse.


feat(stack): add master chart to deploy the Formance Stack

can't really test the Formance Stack chart unless OSS charts are not public


Move shared preferences to hilt

Description
In order to not depend on context everywhere and not to obtain SharedPreferences each time we trying to get language I moved it to hilt.

Why do you want to move shared preferences to hilt when we have to pass context too?

this is the problem of current locale helper, my next PR will be refactor of LocaleHelper
I want move LocaleHelper in Hilt graph too and in this case you will not have to pass sharedprefs to it, because we will retrieve it from hilt in constructor
and because it will be in Hilt you will be able to use it in presenters and viemodels without having context
in code it will be like
@Inject
lateinit var localeHelper: LocaleHelper

val language = localeHelper.getLanguage()

we can park this PR until I finish LocaleHelper refactor to see how it will look like

@naivekook please rebase so we can see if it pass tests

@naivekook rebase again please

rebase needed @naivekook

@VaiTon @teolemon rebased

@VaiTon I didn't remove them , just moved to parent abstract class to make the hilt working automatically in child classes


New release - 0.11.0

Last release (v0.10.0) was from 18th Nov 2023.
At the time of writing, 19 commits have been contributed since (link).
It would be great to create a new release that contains these changes.
Motivation, for context: stdlib-lists are used in Bazel's python rules and are currently referring to a commit specific "raw" Github link (referring to individual git tree source files), which is not ideal. I would like to make a contribution to refer to an official release of the project instead.

Hey @sitaktif, thanks for filing this.
All of the commits since then have been routine workflow updates, plus a small documentation PR and a linting fix. Are these blockers for using v0.10.0? That release should contain exactly the same code as a hypothetical v0.11.0 would 🙂
(If a new release would still be easier, then I don't mind creating it. But it'll likely be v0.10.1 because no semver additions have occurred.)

Thanks @woodruffw, I should have looked a bit more closely; if all these changes are just minor background fixes that don't affect the code, I see no reason to create a new release 🙂
Appreciate you taking the time to answer!

No problem! Please do let us know if you run into any issues with the release, and we'll be happy to try and address them.


Building cheat, Mechanics cheats.. etc doesn't work

thank you for nice cheat first of all, i found features on skills/ cheat options doesn't work.
and i wonder if you can add 'item add' features for modded items :)

There's a small bug with the misc cheats that require you to relog for them to work properly, see if that fixes it.

Activate one of the misc cheats (building, mechanics, whatever)
Log out of the server
Log back into the server
Test them

For modded items I would need a comprehensive list detailing all the base.ids for the items for me to add them in, however, I've provided a manual way of adding items in the items list window that can be utilized to add the items manually if the item ids are known.
Perhaps in the future, something like a JSON file interpreter could be added for people to manually add lists of items. Anyone reading this could potentially work on something like this, I have already implemented functions to get/load files in the configs header file that can be modified/utilized.


Upgrade rails

This upgrades rails to 4.2.6 and all other upgradable gems.

Great, merge when ready


Too much data is returned on a successful CompareAndSwap

We noticed that when you successfully compare and swap, we receive both the previous and current node information. This is overkill in most situations since I knew what I cared about from the previous and I provided the data for the new node. What is most useful is the new modification index.
Would it be possible to add a new flag to just fill out the new modification index and not provide the previous node information nor the current node's data?

It appears the same is true for CompareAndDelete.

@fraenkel @sykesm We are OK for adding a feature flag and preserving the previous behavior by default. Also I would like to see efficiency and performance increment number to justify we do need it.
However, we do not think this would be a high priority thing for etcd team right now. v2 API is in maintenance mode and we are working on v3 api. We would love to see a pull request from you guys if you want to make it happen.

We wanted to discuss it before we did anything.
In our case we have become sensitive to any unnecessary data flowing. When we operate against a large number of items each approximately 6k in size, the cost to encode/decode JSON is costing us valuable time. We know the cost when we use a recursive GET retrieving 100k items, while it's not nearly as high for our CAS/CAD usage, it can be on the order of 1000s for some of our cases. Having the data come back at all and then 2x is basically a cost. We can get some exact numbers for you.

@fraenkel
Let me make this more clear:

we need some number and use case to justify the additional flag for v2

we are designing v3 api. we will keep this in mind. The main goal of v3 is flexibility and efficiency.

I am in the process of doing the performance testing to see the cost of the extra data.
I have been struggling to generate new protobufs and run a build. It seems I can do one or the other but not both on OSX.
If I run genproto one too many times, I get
cp: /Users/fraenkel/workspace/etcd/gopath/src/github.com/coreos/etcd/./wal/walpb/record.proto and record.proto are identical (not copied).
I also noticed that genproto installs many of the protobuf tool but the build tries to use it from Godeps.
genproto assumes gopath is not a symlink and build assumes its a symlink. But neither do proper cleanup or recovery.
Just trying to figure out how to generate and build.

Did figure out the magic to get a build going. Not going to say it was obvious but anyhow here are the results.
My test was pretty straightforward,
Perform 15k sets with 7k of data.
Perform 15k CompareAndSwap with the same 7k using prevIndex only.
Using SHA 008f988f6bbac3cf777fe783992636326b8de2bf (master)

Operation
Original
No Nodes

set time
+1.381558e+001
+1.353714e+001

update time
+1.762903e+001
+1.270849e+001

You can see almost a 5s savings just on the updates.
I am not thrilled how I had to do this since there are many places that rely on the Nodes being available, but I did manage to scope the copy to cloning events since thats the only safe place to do it when you are copying for the result.

@fraenkel If you want to add a feature flag without affecting other stuff, I think it would be fine.

basically, before marshaling the response, check the flag. If the flag is set, then set prevNode or whatever you think is unnecessary to nil.

@fraenkel Are you still interested in working on this issue?

Sure. Let me see what I can do in a few days.


[BACKLOG-13866]-reconvert shims to add excludes and move automaton to global shim pom file

Reconvert pom files to add excludes;
Moved automaton artifact to pentaho-hadoop-shims\shims\pom.xml.

Could you @VasilinaTerehova please review?


Crash on Startup: error during the common_setup event phase

Describe the bug
Minecraft fails to load mod, worked fine yesterday.
To Reproduce
Launch Client
Minecraft version
Minecraft version: 1.18.1
Mod loader: Forge
Mods loaded with the mod: Standalone
Crash report or logs
---- Minecraft Crash Report ----
// Daisy, daisy...
Time: 12/26/21, 1:05 PM
Description: Mod loading error has occurred
java.lang.Exception: Mod Loading has failed
at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:69) ~[forge-1.18.1-39.0.5-universal.jar%2357!:?] {re:classloading}
at net.minecraftforge.client.loading.ClientModLoader.completeModLoading(ClientModLoader.java:183) ~[forge-1.18.1-39.0.5-universal.jar%2357!:?] {re:classloading,pl:runtimedistcleaner:A}
at net.minecraft.client.Minecraft.lambda$new$1(Minecraft.java:553) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:atianxray.mixins.json:MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.Util.m_137521_(Util.java:409) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:classloading}
at net.minecraft.client.Minecraft.lambda$new$2(Minecraft.java:547) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:atianxray.mixins.json:MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.client.gui.screens.LoadingOverlay.m_6305_(LoadingOverlay.java:135) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:classloading,pl:runtimedistcleaner:A}
at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:875) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1040) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:atianxray.mixins.json:MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:660) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:atianxray.mixins.json:MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.1-20211210.034407-srg.jar%2353!:?] {re:classloading,pl:runtimedistcleaner:A}
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}
at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:45) ~[fmlloader-1.18.1-39.0.5.jar%2323!:?] {}
at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%235!:?] {}
at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {}
A detailed walkthrough of the error, its code path and all known details is as follows:
-- Head --
Thread: Render thread
Stacktrace:
at com.google.gson.Gson.assertFullConsumption(Gson.java:905) ~[gson-2.8.8.jar%2322!:?] {}
-- MOD atianxray --
Details:
Mod File: xray-1.2.2-forge-1.18.1.jar
Failure message: XrayMod (atianxray) encountered an error during the common_setup event phase
com.google.gson.JsonIOException: JSON document was not fully consumed.
Mod Version: 1.2.2
Mod Issue URL: https://github.com/ate47/Xray/issues
Exception message: com.google.gson.JsonIOException: JSON document was not fully consumed.
Stacktrace:
at com.google.gson.Gson.assertFullConsumption(Gson.java:905) ~[gson-2.8.8.jar%2322!:?] {}
at com.google.gson.Gson.fromJson(Gson.java:871) ~[gson-2.8.8.jar%2322!:?] {}
at fr.atesab.xray.XrayMain.loadConfigs(XrayMain.java:287) ~[xray-1.2.2-forge-1.18.1.jar%2352!:1.2.2] {re:mixin,re:classloading}
at fr.atesab.xray.XrayMain.setup(XrayMain.java:496) ~[xray-1.2.2-forge-1.18.1.jar%2352!:1.2.2] {re:mixin,re:classloading}
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-5.0.3.jar%232!:?] {}
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-5.0.3.jar%232!:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.3.jar%232!:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.3.jar%232!:?] {}
at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:120) ~[javafmllanguage-1.18.1-39.0.5.jar%2355!:?] {}
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:121) ~[fmlcore-1.18.1-39.0.5.jar%2354!:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}
-- System Details --
Details:
Minecraft Version: 1.18.1
Minecraft Version ID: 1.18.1
Operating System: Windows 10 (amd64) version 10.0
Java Version: 17.0.1, Microsoft
Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft
Memory: 889415544 bytes (848 MiB) /<PHONE_NUMBER> bytes (1504 MiB) up to<PHONE_NUMBER> bytes (2048 MiB)
CPUs: 6
Processor Vendor: GenuineIntel
Processor Name: Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz
Identifier: Intel64 Family 6 Model 158 Stepping 13
Microarchitecture: Coffee Lake
Frequency (GHz): 3.70
Number of physical packages: 1
Number of physical CPUs: 6
Number of logical CPUs: 6
Graphics card #0 name: NVIDIA GeForce RTX 2070 SUPER
Graphics card #0 vendor: NVIDIA (0x10de)
Graphics card #0 VRAM (MB): 4095.00
Graphics card #0 deviceId: 0x1e84
Graphics card #0 versionInfo: DriverVersion=<IP_ADDRESS>29
Memory slot #0 capacity (MB): 16384.00
Memory slot #0 clockSpeed (GHz): 3.60
Memory slot #0 type: DDR4
Memory slot #1 capacity (MB): 16384.00
Memory slot #1 clockSpeed (GHz): 3.60
Memory slot #1 type: DDR4
Virtual memory max (MB): 40383.54
Virtual memory used (MB): 15124.39
Swap memory total (MB): 7680.00
Swap memory used (MB): 0.00
JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
ModLauncher: 9.0.7+91+master.8569cdf
ModLauncher launch target: forgeclient
ModLauncher naming: srg
ModLauncher services:
mixin PLUGINSERVICE
eventbus PLUGINSERVICE
object_holder_definalize PLUGINSERVICE
runtime_enum_extender PLUGINSERVICE
capability_token_subclass PLUGINSERVICE
accesstransformer PLUGINSERVICE
runtimedistcleaner PLUGINSERVICE
mixin TRANSFORMATIONSERVICE
fml TRANSFORMATIONSERVICE
FML Language Providers:
<EMAIL_ADDRESS>javafml@null
Mod List:
client-1.18.1-20211210.034407-srg.jar             |Minecraft                     |minecraft                     |1.18.1              |SIDED_SETU|Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f
xray-1.2.2-forge-1.18.1.jar                       |XrayMod                       |atianxray                     |1.2.2               |ERROR     |Manifest: NOSIGNATURE
forge-1.18.1-39.0.5-universal.jar                 |Forge                         |forge                         |39.0.5              |SIDED_SETU|Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90
Crash Report UUID: c59ceac4-bf5d-430d-8b75-4bb97d211e1e
FML: 39.0
Forge: net.minecraftforge:39.0.5

Can you send me the config/xray.json file in you .minecraft?

Can't directly send file, uploaded to:
https://github.com/rygonzalez/ezshare

did you do something on it or was it created by the mod itself?

created by mod itself. tried a different xray mod beforehand however, though it did not register in forge

really weird, I'm sorry, but I don't have my computer on me and I won't be able to fix it without testing this week. If you really need it, maybe try to delete the xray.json before loading Minecraft

No worries, seemed to work. Thx!

A similar problem, deleting the config helped

Any eta on when a patch is released so this works? i cant figure out how to delete the .json file in my extractor application

I was really overbooked for the last 2 weeks, so I wasn't able to work on it. I'm working on a new version with all the fixes in the forge-1.17-v2 branch, the version will then be updated to fabric and forge/fabric 1.18 soon after.

fixed in 2.0.0


number of curated paper reported on front page drop

In the SAB report I used the number of publications approved in Canto 4232.
Oddly the front page now reports 3593 curated publications. I'm sure this was also over 4000 recently.

yep, screenshot from  departmental presentation:

Sorry about that.  The way the number is calculated changed in the issues below.  The number was the count of approved sessions, including those with no annotation in Canto.  It's now the number of approved sessions in Canto ignoring those with no annotation.
We now mark a publication as community curated if the community curator added at least one annotation (see pombase/canto#2594).  If there are no community annotations, but there is at least one admin annotations we mark the publication as admin curated.  If there are no annotations, it's not included in the curated publication count.
Perhaps we need to change the algorithm?

pombase/website#525
pombase/canto#2594
pombase/website#1933

I think it's K. It's a shame about the drop but  quite a few papers go through Canto, but when inspected do not have data that is curatable   on closer inspection (i.e a structure with no biochemical. or interaction details that we can extract).
I am surprised it is 600 though!


Mssql description field generate in column comment

hi @Kononnable ,
I have question, is posible to generate entities properties column comments from mssql field description?
thanks.

It isn't possible now, but I think it is a good feature to implement in the future.


Post request

Figure out how to send a post request with jQuery to spring boot.

We've been at it for an hour and nothing works, loads of examples online but no good.

There was an issue with how the spring boot server was expecting parameters. Jquery turned out to be fine. It's working okay now.


Clp keeper tests

Yeh Test was not the best word to use. This is more like a working skeleton than a test and plan is to rename them and evolve into the correct api for clps.

fixed according to notes in new PR and closing this one. (going to leave the 'test' naming conventions in for now as they are not just a 'testing version', but the base to evolve into correct names for CLPs once correct logic is implemented). we can have another discussion about feature density in branches vs merging to master later if needed.


Redirect to www subdomain

Hey, can I set up the container somehow to always redirect all requests to www ?
Example :

domain.com => www.domain.com

This project (JrCs/docker-letsencrypt-nginx-proxy-companion) "only" purpose is to:

enable the automatic creation of certificates from containers env var.
put them in the right place with the right name so they can be used by nginx-proxy docker-gen template.
reload the nginx proxy when needed (cert creation or renewal).

What you want to achieve depends entirely on the jwilder/nginx-proxy project, which does the actual proxying and is maintained by different people.
We only deal with issues related to letsencrypt-nginx-proxy-companion, so please submit your nginx-proxy issues directly to the nginx-proxy repo.

@buchdag I have the same situation (at least almost, i redirect the other way around), but i get an error with the certificate generation.
My setup is the following:
I use jwilders proxy-gen (seperate container not the nginx-proxy)
the proxy-gen is setup to have the redirects from www.<MY_DOMAIN>.com to <MY_DOMAIN>.to (also listenings on 443 so https://www.<MY_DOMAIN>.com should also be redirected to https://<MY_DOMAIN>.com)
I have a container with VIRTUAL_HOST <MY_DOMAIN>.com and LETSENCYPT_HOST <MY_DOMAIN>.com,www.<MY_DOMAIN>.com
the problem is that this companion ist able to generate the cert anymore, even though <MY_DOMAIN>.com and www.<MY_DOMAIN>.com are reachable, but www.<MY_DOMAIN>.com returns a 301 redirect to <MY_DOMAIN>.com.
The error thrown is the following:
Creating/renewal <MY_DOMAIN>.com certificates... (<MY_DOMAIN>.com www.<MY_DOMAIN>.com)
/usr/lib/python2.7/site-packages/acme/jose/jwa.py:110: CryptographyDeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
  signer = key.signer(self.padding, self.hash)
2018-05-14 08:20:21,166:INFO:simp_le:1479: Generating new certificate private key
2018-05-14 08:20:23,602:ERROR:simp_le:1446: CA marked some of the authorizations as invalid, which likely means it could not access http://example.com/.well-known/acme-challenge/X. Did you set correct path in -d example.com:path or --default_root? Are all your domains accessible from the internet? Please check your domains' DNS entries, your host's network/firewall setup and your webserver config. If a domain's DNS entry has both A and AAAA fields set up, some CAs such as Let's Encrypt will perform the challenge validation over IPv6. If your DNS provider does not answer correctly to CAA records request, Let's Encrypt won't issue a certificate for your domain (see https://letsencrypt.org/docs/caa/). Failing authorizations: https://acme-v01.api.letsencrypt.org/acme/authz/Qi_5SbKefTI2XvOqtF_ab5ZKGuF_6yClVYzBvFD8VqI
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 1584, in main
    return main_with_exceptions(cli_args)
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 1567, in main_with_exceptions
    persist_new_data(args, existing_data)
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 1489, in persist_new_data
    account_key=client.key, key=None, cert=None, chain=None))
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 1195, in persist_data
    plugin.save(new_data)
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 493, in save
    key = self.dump_key(data.key)
  File "/usr/lib/python2.7/site-packages/simp_le.py", line 436, in dump_key
    return OpenSSL.crypto.dump_privatekey(self.typ, data.wrapped).strip()
AttributeError: 'NoneType' object has no attribute 'wrapped'

Unhandled error has happened, traceback is above

any ideas on what could be the problem? or ideas how i could get it to work?


DUMB QUESTION -- HD AUDIO DEVICE

I accidentally removed my HD Audio Device from my Windows 10 system (via Control Panel).
I tried reinstalling my Audio Drivers -- but the error said it could not find an Audio Device.
H E L P
I am out of business with recording!!!
If you can possibly give me some things to try...
I will very much appreciate it.

Not a coding issue.


geocode.reverseGeocode

ArcRest
Version or date of download
9/16/2016
Bug or Enhancement
reverseGeocode method doesn't appear to work
Repo Steps or Enhancement details
geocode = arcrest.ags.GeocodeService(url=geocode_url, securityHandler=shh.securityhandler)
print geocode.find("1411 E Mission Ave, Spokane, WA")

#retreived point geometry from first result
print geocode.reverseGeocode(location=[13067768.55961826, 6052424.22761417])
{u'error': {u'message': u'Cannot perform query. Invalid query parameters.', u'code': 400, u'details': [u'Unable to find address for the specified location.']}}

Issue was reverseGeocode is expecting WKID, switching to this resolved issue
print geocode.reverseGeocode(location=[-117.38, 47.67])


Scan Excel Sheet Cells and Determine the necessary Python Function

Look through the HEAT Rules Engine Excel sheet and determine Python functions for the cells.

Anyone who is working on this task: feel free to message me on Slack or take a look at the notes I've been writing up in our shared drive, so that we can sync up our work. Once we have reasonably good idea of the functions we need based on what's in the spreadsheet, we can write up a specific list of methods / functionalities with desired inputs and outputs and use that list to populate new issues / project guideposts for the Rules Engine side of things.

https://docs.google.com/document/d/1PJU_LBMxDQef0xJiuMxaD4PlO8woMvdh1xVI4ChluGw/edit?usp=sharing

At this point, I think the above notes are sufficient for starting Python development. Unless there is anything else, I think this issue can be closed.


documentation error in docstring of pdist/cdist

(follow-up of my message on the mailing-list http://mail.scipy.org/pipermail/scipy-dev/2015-January/020316.html)
I believe there is an error in the docstring of pdist/cdist in the scipy.spatial submodule. The explanation of the layout of the returned distance array seems wrong (and incompatible with the docstring of squareform)
http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.spatial.distance.pdist.html

[...]
Returns
Y : ndarray
Returns a condensed distance matrix Y.  For
each :math:i and :math:j (where :math:i<j<n), the
metric dist(u=X[i], v=X[j]) is computed and stored in entry ij.
[...]

Is this indeed the entry i*j ? Because the docstring of squareform says :

[...]
The  X[i, j] and X[j, i] values are set to  v[{n \choose 2}-{n-i \choose 2} + (j-u-1)]
[...]

Here is Matlab doc for comparison: http://www.mathworks.com/help/stats/pdist.html
Ideally I should have pushed a PR with a fix proposal, but didn't find the time so I'm writing this issue instead. ;-(

In pdist  docstring, the returned ndarray Y is a condensed distance matrix. According to the MATLAB doc and examples, it looks like it should be v[{n \choose 2}-{n-i \choose 2} + (j-i-1)], where i<j .
I think it cdist, the returned matrix is not a condensed matrix, but of size ma by mb. It just needs a change in the statement that says ij entry.
Also, in squareform,  X[i,j] and X[j,i] values are set to v[{n \choose 2}-{n-i \choose 2} + (j-i-1)], where i<j . I think it is accidentally typed as uinstead ofi. Some other errors like dd(-1)instead ofd(d-1)``.
Please do correct me if I am wrong, but this is how the implementation of functions looks like to me.

fixed in gh-6914 (and perhaps a few other PRs). pdist/cdist docstrings have been updated multiple times since 2015


Untraslated / hardcoded label

返回 here
https://github.com/donotebase/quasar-tiptap/blob/0729de155c9e9347afbed9743259d8be1421ab0b/src/components/common/OBlockCard.vue#L6

:tada: This issue has been resolved in version 1.4.4 :tada:
The release is available on:

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Parameters

Uses firedrake parameter dictionary to store parameters instead of old class

Now one can control and update parameters directly from demos

small format changes to slope mod

I think that the slope modification is now not setting the values of momentum from the previous function if the momentum isn't being limited or the depth isn't past the lower bound! Check this! And if so make sure that we set the momentum to the previous value before limiting.


no need for NodeRefWithLabel - remove

never hold label as a member, not even in refs

This seems to also contain a lot of renaming. Was it not possible to split that?


Volunteer export as JSON

@pjaudiomv

related to https://github.com/bmlt-enabled/yap/issues/595

will be in 4.2.0

proposed fix released in 4.2.0