* Remove runtime alias hack
* Pass absolute path to preset
* Change comment
* Give a relative path to absolute runtime
* Clean up config
* Tweak again
* Make absolute runtime the default
* Remove runtime package from error overlay
* Add workbox service worker functionality
* Remove debug
* Set workboxConfig for when there isn't a cra config file
* Remove workbox configuration options as c-r-a isn't planning on supporting optional configuration
* Remove c-r-a config path from paths
* Add workbox service worker functionality
* Remove c-r-a config path from paths
* Inline the webpack workbox config
* Use settings reccommended by @jeffposnick
https://github.com/facebook/create-react-app/pull/4169/#issuecomment-422963072
* Fallback to public url index.html, not root
* Add one comment
* Update comment
* Correct regex
* Turn on helpers and test importing something with async/await works
* Compiling babel runtime breaks itself
* Add helpers option to babel plugin with defaults
* Make helpers off by default and on in our configuration
* Hit eject and e2e
* meh
* copy'n'paste
* change again
* Turn off helpers by default in /prod, /dev, /test
* oops
* Spread undefined
* Use object assign not object spread
* Put preset in template since it's needed
* Fix e2e tests
This is the best behavior so people have seamless upgrades to new React majors.
This is probably a terrible default warning from the ESLint plugin, and we need to wait for https://github.com/yannickcr/eslint-plugin-react/issues/1955 before changing this hardcoded behavior.
Closes#5034
* Updates to reflect service worker registration being opt-in.
* Fixed an anchor link.
* Updates to SWPrecacheWebpackPlugin config, and corresponding docs.
The `formatter` option is incompatible with with `thread-loader`.
The `formatter` option previously accepted a function which was lost during JSON serialization.
* Update paths.js, rename shadow path variable
This file requires the "path" module and sets it to a variable `path`. The function `ensureSlash` also has a variable `path` that then shadows the `path` module.
* Update paths.js
* - [x] Upgrade to webpack 4.8.X
- [x] Utilize webpack 4 development and production modes
- [x] Upgrade webpack dev server
- [x] Webpack 4 compatible release of thread-loader
- [x] Webpack 4 compatible release of HtmlWebpackPlugin
- [x] Webpack 4 compatible release of SwPrecacheWebpackPlugin
- [x] Webpack 4 compatible release of WebpackManifestPlugin
- [x] Update README
- [x] Update WebpackDevServerUtils
- [x] Update InterpolateHtmlPlugin
- [x] Update ModuleScopePlugin
- [x] Update WatchMissingNodeModulesPlugin
- [x] Move UglifyJS options to webpack 4 optimize
- [x] Move InterpolateHtmlPlugin to make it tapable on HtmlWebpackPlugin
- [x] vendor splitting via splitChunks.splitChunks (https://twitter.com/wSokra/status/969633336732905474)
- [x] long term caching via splitChunks.runtimeChunk (https://twitter.com/wSokra/status/969679223278505985)
- [x] Make sure process.env.NODE_ENV is proxied correctly to `react-error-overlay`
- [x] Implicit webpack.NamedModulesPlugin in dev config as its default in webpack 4
- [x] Disable webpack performance hints as we have our own filesize reporter
- [x] Replace ExtractTextPlugin with MiniCssExtractPlugin
- [x] Switch to css whole file minification via OptimizeCSSAssetsPlugin rather than per module css minification to gain performance
* disable module concatenation
* fix cleanup
* fix optimization
* restore tmp removal
* preserve
* fix css tests
* fix test run
* fix svg test
* revert tmp dir
* fix import
* fix import
* help debugging
* fix tests
* fix sass test
* restore cleanup
- [x] Utilize webpack 4 development and production modes
- [x] Upgrade webpack dev server
- [x] Webpack 4 compatible release of thread-loader
- [x] Webpack 4 compatible release of HtmlWebpackPlugin
- [x] Webpack 4 compatible release of SwPrecacheWebpackPlugin
- [x] Webpack 4 compatible release of WebpackManifestPlugin
- [x] Update README
- [x] Update WebpackDevServerUtils
- [x] Update InterpolateHtmlPlugin
- [x] Update ModuleScopePlugin
- [x] Update WatchMissingNodeModulesPlugin
- [x] Move UglifyJS options to webpack 4 optimize
- [x] Move InterpolateHtmlPlugin to make it tapable on HtmlWebpackPlugin
- [x] vendor splitting via splitChunks.splitChunks (https://twitter.com/wSokra/status/969633336732905474)
- [x] long term caching via splitChunks.runtimeChunk (https://twitter.com/wSokra/status/969679223278505985)
- [x] Make sure process.env.NODE_ENV is proxied correctly to `react-error-overlay`
- [x] Implicit webpack.NamedModulesPlugin in dev config as its default in webpack 4
- [x] Disable webpack performance hints as we have our own filesize reporter
- [x] Replace ExtractTextPlugin with MiniCssExtractPlugin
- [x] Switch to css whole file minification via OptimizeCSSAssetsPlugin rather than per module css minification to gain performance
Summary:
The `hasSlash` method uses `path.substr(path, path.length - 1)` to
remove the last character from `path`. Clearly, the first parameter is
suspect; it should be `0`. The code works as written, but only very
accidentally: the first parameter is coerced by `ToNumber` to `NaN`,
which is then coerced by `ToInteger` to `+0`, per [the spec][1].
[1]: https://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.substr
Test Plan:
Reading the spec should be sufficient. To verify in the Real World:
```js
const path = "has-slash-but-does-not-need-slash/"
const a = path.substr(path, path.length - 1);
const b = path.substr(0, path.length - 1);
console.log(a === b); // true
console.log(a); // has-slash-but-does-not-need-slash
```
wchargin-branch: ensureslash-accidental-coercion
* Installs and adds sass loader task in webpack for dev environment.
* Uses Timer's branch of sass-loader without node-sass dependency.
* Adds method for handling SASS modules.
* Fixes extension of excluded files when looking for scss modules.
* Adds support for both .scss and .sass extensions.
* Uses ExtractTextPlugin with sass-loader to bundle styles for the production build.
* Bundles SASS modules for the production build.
* Uses the latest version of sass-loader.
* Adds function to create different rules for style loaders in dev environment.
* Abstracts style loaders to a common function to avoid repetition.
* Simplifies the common function that creates style loaders.
* Creates assets for testing SASS/SCSS support.
* Creates mock components and unit tests for SASS and SCSS with and without modules.
* Creates integration tests for SASS/SCSS support.
* Adds node-sass as a template dependency so sass-loader can be tested.
* Includes sass tests when test component is mounted.
* Fixes asserted module name for sass and scss modules tests.
* Removes tests against css imports in SCSS and SASS files.
* Updates sass-loader to v7.
* Uses getCSSModuleLocalIdent from react-dev-utils.
* Fixes tests to match the use of getCSSModuleLocalIdent.
* Improves readability of getStyleLoader function.
* Uses postcss after sass.
* Refactors dev config to simplify common function for style loaders.
* Refactors prod config to simplify common function for style loaders.
* Use importLoaders config according to css-loader docs.
* Revert to use ecma 5 in uglifyOptions
* remove explicit ecma version from uglifyOptions settings
The defaults are already what we want
* be explicit of where we use ecma: 8 and ecma: 5
* Run yarn after ejecting.
* On eject, choose to run yarn instead of npm if yarn is available.
* Move monorepo to react-dev-utils.
* Fix lint.
* Rename monorepo to workspaceUtils.
* Add react-dev-utils dep for create-react-app.
* getMonorepo -> findMonorepo