7 Commits

Author SHA1 Message Date
William Chargin
b45ef739fe
new-webpack: clean build/ before prod (#568)
Summary:
In our current system, we build by invoking `scripts/build.js`, which
begins by removing the `build/` directory. This behavior is nice,
because it prevents cross-contamination between builds. In this commit,
we add a plugin to achieve the same result from directly within Webpack.

Test Plan:
Run

```
mkdir -p ./build
touch ./build/wat
NODE_ENV=production node ./node_modules/.bin/webpack \
    --config config/makeWebpackConfig.js
```

and ensure that `./build/wat` does not exist after the build completes.

wchargin-branch: webpack-clean-build
2018-07-30 18:01:47 -07:00
William Chargin
1d48bf9390
new-webpack: serve static files (#567)
Summary:
This commit makes the Webpack dev server fully functional under the new
config, by serving the static SourceCred directory via a piece of
injected middleware.

Test Plan:
Run

```
NODE_ENV=development node ./node_modules/.bin/webpack-dev-server \
    --config config/makeWebpackConfig.js
```

and navigate to the cred explorer. Note that the repository registry is
fetched, and the whole cred explorer works.

wchargin-branch: webpack-statics
2018-07-30 17:29:34 -07:00
William Chargin
37eddcaf27
new-webpack: only minify in prod (#566)
Summary:
Extraction of the plugin list to a function is mostly trivial, but
requires a novel `// $ExpectFlowError`. The error has been there the
whole time, but Flow only catches it now. Why? Who knows.

Test Plan:
Run

```
NODE_ENV=development node ./node_modules/.bin/webpack-dev-server \
    --config config/makeWebpackConfig.js
```

Note that the compilation/recompilation time is much faster than
previously.

wchargin-branch: webpack-minify-prod-only
2018-07-30 17:11:30 -07:00
William Chargin
fca43f4362
new-webpack: allow running in dev (#565)
Summary:
In addition to simply disabling the prod-only check, we apply a
workaround for a known bug that breaks static site generation in Webpack
versions >= 2.0.

Test Plan:
Run

```
NODE_ENV=development node ./node_modules/.bin/webpack-dev-server \
    --config config/makeWebpackConfig.js
```

and visit http://localhost:8080/webpack-dev-server/ (note the trailing
slash) or just http://localhost:8080/. Expect the server to be slow, as
it is actually building for production.

wchargin-branch: webpack-enable-dev
2018-07-30 16:26:13 -07:00
William Chargin
7bf0ed3c84
new-webpack: functionize (#564)
Summary:
This will enable us to differentiate the production and development
behavior where necessary (primarily, only running minification in prod).

Best reviewed with `git show -w`.

Test Plan:
The diff with `git show -w` and the fact that `yarn flow` passes should
be sufficient. If you really want to be thorough, run Webpack with this
config file and `NODE_ENV` set to `production`.

wchargin-branch: webpack-functionize
2018-07-30 16:22:55 -07:00
William Chargin
e2a94c2aa8
new-webpack: add Flow typing (#563)
Summary:
There really should be an `// $ExpectFlowError` on the dynamic `require`
on line 182:

```js
      paths: require(paths.appRouteData).routeData.map(({path}) => path),
```

However, for some reason Flow does not catch this error now, so adding a
suppression comment generates an “unused suppression” warning. We
therefore omit the suppression in this commit; we will add it later,
once Flow magically finds the error.

Test Plan:
`yarn flow` reports no errors; a deliberately introduced error is
properly caught.

wchargin-branch: webpack-flow
2018-07-30 16:19:21 -07:00
William Chargin
8dec3aa61b
new-webpack: copy prod config to new shared config (#562)
Summary:
This module will become the shared home of the production and
development configurations.

Test Plan:
Run:

```
rm -r build/
NODE_ENV=production node node_modules/.bin/webpack \
    --config config/makeWebpackConfig.js
(cd build && python -m SimpleHTTPServer)
```

and load http://localhost:8000. Note that the main content of app still
works, although the static assets in the SourceCred directory are not
loaded so the useful functionality is crippled.

wchargin-branch: webpack-init
2018-07-30 16:15:30 -07:00