* support scoped packages for cra --scripts-version option
* seperate out kitchensink test
* add eject to node 6 testing
* travis node 6 eject
* fix CI warnings
To analyze Webpack bundles, a "stats" JSON is required.
This PR allows that file to be created and saved to the `build`
directory, so that users can use it with Webpack-specific insight
tools like `webpack-bundle-analyzer` without ejecting their
application.
Updated the README to include details for how to do this.
* 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
* Removes Chokidar Recursive Flag
According to the changelog it is not necessary anymore as it doesn't do anything.
* Removes initial build on SCSS watch
Chokidar now does this on it's own.
* Removes sass watch recursive, default include-path
as proposed by @michaelwayman
* Removes another left-over build-css
Support for .mjs files added in #3239 did not account for npm libraries which ship native mjs files alongside js files. This accounts for this by ensuring .js files resolve before their accompanying .mjs file. Note that this is not an ideal end state since selecting a .mjs over a .js extension should be the result of whether `import` was used instead of `require()` in a node environment with native ESM support (currently via `--experimental-modules`). Instead, this change just *always* selects a .js extension before the .mjs extension if it exists.
This unbreaks support for using GraphQL (relay, apollo, etc) within create-react-app projects.
* - [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