Move off node10 and add intellisense (#4643)

* Move off node10 and bring in node16

* Update engine lock

* update webpack and add the output.hashFunction option to avoid a potential issue with Node 17 in case the config changes closer to defaults

At the moment there is no error with Node 17 because the config strays from the defaults and avoids the common case.

Also add a tsconfig.json file that enables VS Code and other IDEs to perform type checking on the side. For example now the webpack config file is type checked. This does not impact any existing processes, our build scripts are left untouched and only IDEs will use it for live intellisense and type checking when viewing files (f.e. showing helpful red squiggly underlines on type errors)

* mini-css-extract-plugin

* Update webpack.prod.js

* Update webpack.prod.js

* 15

* Update config.yml

* Updated config.yml

* Updated config.yml

* Updated config.yml

* Update package.json

* comment and EOF

Co-authored-by: Joe Pea <joe.pea@nasa.gov>
Co-authored-by: Joe Pea <trusktr@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
This commit is contained in:
John Hill 2022-01-07 11:39:25 -08:00 committed by GitHub
parent f6934a43c9
commit b3ab56cb57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 16 deletions

View File

@ -76,14 +76,14 @@ jobs:
node-version: <<parameters.node-version>>
- run: npm audit --audit-level=low
- generate_and_store_version_and_filesystem_artifacts
node10-lint:
node14-lint:
parameters:
node-version:
type: string
executor: pw-focal-development
steps:
- checkout
- node/install:
install-npm: false #Cannot install latest npm version with node10.
node-version: lts/dubnium
- run: npm install
- build_and_install:
node-version: <<parameters.node-version>>
- run: npm run lint
- generate_and_store_version_and_filesystem_artifacts
unit-test:
@ -141,7 +141,8 @@ jobs:
workflows:
overall-circleci-commit-status: #These jobs run on every commit
jobs:
- node10-lint
- node14-lint:
node-version: lts/fermium
- unit-test:
name: node12-chrome
node-version: lts/erbium
@ -158,10 +159,6 @@ workflows:
suite: ci
the-nightly: #These jobs do not run on PRs, but against master at night
jobs:
- unit-test:
name: node10-chrome-nightly
node-version: lts/dubnium
browser: ChromeHeadless
- unit-test:
name: node12-firefoxESR-nightly
node-version: lts/erbium

View File

@ -13,7 +13,7 @@
"babel-eslint": "10.1.0",
"comma-separated-values": "^3.6.4",
"concurrently": "^3.6.1",
"copy-webpack-plugin": "^9.0.0",
"copy-webpack-plugin": "^10.2.0",
"cross-env": "^6.0.3",
"css-loader": "^4.0.0",
"d3-axis": "1.0.x",
@ -51,7 +51,7 @@
"lodash": "^4.17.12",
"markdown-toc": "^0.11.7",
"marked": "^0.3.5",
"mini-css-extract-plugin": "^1.6.0",
"mini-css-extract-plugin": "2.4.5",
"minimist": "^1.2.5",
"moment": "2.25.3",
"moment-duration-format": "^2.2.2",
@ -76,7 +76,7 @@
"vue-eslint-parser": "8.0.1",
"vue-loader": "15.9.8",
"vue-template-compiler": "2.5.6",
"webpack": "^5.53.0",
"webpack": "^5.65.0",
"webpack-cli": "^4.0.0",
"webpack-dev-middleware": "^3.1.3",
"webpack-hot-middleware": "^2.22.3",
@ -112,7 +112,7 @@
"url": "https://github.com/nasa/openmct.git"
},
"engines": {
"node": ">=10.12.2 <16.0.0"
"node": ">=12.0.1 <15.0.0"
},
"author": "",
"license": "Apache-2.0",

13
tsconfig.json Normal file
View File

@ -0,0 +1,13 @@
/* Note: Open MCT does not intend to support the entire Typescript ecosystem at this time.
* This file is intended to add Intellisense for IDEs like VSCode. For more information
* about Typescript, please discuss in https://github.com/nasa/openmct/discussions/4693
*/
{
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"strict": true,
"module": "esnext",
"moduleResolution": "node"
}
}

View File

@ -1,3 +1,5 @@
/* global __dirname */
const path = require('path');
const packageDefinition = require('./package.json');
const CopyWebpackPlugin = require('copy-webpack-plugin');
@ -12,7 +14,8 @@ const gitBranch = require('child_process')
.execSync('git rev-parse --abbrev-ref HEAD')
.toString().trim();
module.exports = {
/** @type {import('webpack').Configuration} */
const config = {
entry: {
openmct: './openmct.js',
couchDBChangesFeed: './src/plugins/persistence/couch/CouchChangesFeed.js',
@ -27,6 +30,7 @@ module.exports = {
library: '[name]',
libraryTarget: 'umd',
publicPath: '',
hashFunction: 'xxhash64',
clean: true
},
resolve: {
@ -129,3 +133,5 @@ module.exports = {
},
stats: 'errors-warnings'
};
module.exports = config;