Apparently the "engines" files of package.json is no longer checked
regularly when performing installs. With the changes and different
behaviors across different version of Node & NPM, and having no other
way to ensure everybody contributing is on the same page, this
preinstall check is necessary.
This heavily relies on "SemVer" NPM package, but in order to actually
check this prior to the first set of packages installed the code needs
to be there. So this is a slimmed down version of SemVer and syntax has
been updated.
This issue means that any changes to the HTML has to happen in the
`.\src\index.html` file rather than the `.\index.html`. This makes the
`index.html` in the root now a build artifact the same way that files in
`dist\` are.
This may seem unnecessary (and odd to import CSS files into JS...), but
this sets up the project for being able to keep the distributed
(release) resources all together, as well as setting the stage for
introducing something like SCSS.
This is the baseline for Stylelint configuration. No violations exist
with the uncommented rules. The rules that are commented out at the
beginning of the line should be considered for enabling, as well as
fixing them up.
This is a baseline ESLint configuration, with *A LOT* of rules disabled.
All rules that are enabled already conform to the codebase. As code
clean up starts to happen, rules can be enabled one-by-one.
As it currently stands, bringing in TSLint with *all* rules enabled by
default and override each as we go. This means that as we upgrade and
bring in new rules we might start seeing new rules that the code
violates.
Because all the rules are enabled by default, the choice to explicitly
disable/relax rules can be discussed as part of PRs.
This also brought in strict type checking. This means we shouldn't be
relying on truthy/falsey value coercion. It also means that we will
likely need to create some type definition files or port certain files
over. That...will be a bit tedious, but will make the codebase better as
a whole.
In order to shave off ~0.02MiB of the bundle size, needed to continue
referencing the minified file. Ideally future changes can utilize
code splitting, tree shaking, and minification in WebPack to use normal
references.
The bundled output is noticeably different; likely due to Webpack 4
vs. 2/3. The order of dependencies also appears to have changed.
The overall output *seems* to be the same. Unsure how to full test
that everything is getting bundled appropriately.
This also allows the project to be built without having to manually
copy files into node_modules.
Keeping all the dependencies and additional scripts, as some of them
could come in useful for future work. A number of the dependencies were
based on Webpack rather than what is really used.