diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..9b72688 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,19 @@ +version: 2.1 + +jobs: + test_and_publish: + docker: + - image: node:12.16-alpine + steps: + - checkout + - run: npm ci + - run: npm run format-check + - run: npm run test + - run: npm run build + - run: npm run build:dev + +workflows: + version: 2 + test_and_publish: + jobs: + - test_and_publish diff --git a/.env b/.env index 6093cf9..a1cce15 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -NODE_IMAGE=node:12.16.1-alpine3.11 \ No newline at end of file +NODE_IMAGE=node:12.16-alpine \ No newline at end of file diff --git a/.gitignore b/.gitignore index 14b8a97..f37efb6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ built/ coverage/ node_modules/ var/ +.npmrc diff --git a/package-lock.json b/package-lock.json index 7f301e1..9a9235a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2016,12 +2016,6 @@ "type-detect": "^4.0.0" } }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", diff --git a/package.json b/package.json index fcb327c..b404e4c 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,10 @@ "test": "mocha", "coverage": "nyc mocha", "build:dev": "webpack", - "build": "WEBPACK_ENV=build webpack", + "build": "webpack --env.production", "format": "prettier --tab-width=4 --single-quote --trailing-comma es5 --write '{src,tests}/**/*.{ts,js}'", + "format-check": "prettier --tab-width=4 --single-quote --trailing-comma es5 --check '{src,tests}/**/*.{ts,js}'", + "format-wp": "prettier --tab-width=4 --single-quote --trailing-comma es5 --write 'webpack.config.js'", "format-md": "prettier --write './*.md'" }, "devDependencies": { @@ -22,7 +24,6 @@ "@types/mocha": "^7.0.2", "@types/node": "^13.9.2", "chai": "^4.2.0", - "deepmerge": "^2.2.1", "mocha": "^7.1.1", "nyc": "^15.0.0", "prettier": "^1.19.1", diff --git a/tsconfig.json b/tsconfig.json index bec1a93..3521f75 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "outDir": "./built", + "outDir": "./dist", "allowJs": true, "target": "es5", "module": "commonjs", diff --git a/webpack.config.js b/webpack.config.js index f5021d0..4e04282 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,7 +1,18 @@ const path = require('path'); -const merge = require('deepmerge'); -const baseConfig = { +module.exports = (env = {}) => ({ + mode: env.production ? 'production' : 'development', + entry: path.resolve(__dirname, 'src/index.ts'), + output: { + filename: env.production ? 'predictor.min.js' : 'predictor.js', + path: path.resolve(__dirname, 'dist'), + library: 'predictor', + libraryTarget: 'umd', + umdNamedDefine: true, + }, + resolve: { + extensions: ['.ts', '.js'], + }, module: { rules: [ { @@ -10,41 +21,6 @@ const baseConfig = { loader: 'ts-loader', }, }, - ] + ], }, -}; - -const buildConfig = { - mode: 'production', - entry: path.resolve(__dirname, 'src/index.ts'), - output: { - filename: 'predictor.min.js', - path: path.resolve(__dirname, 'built'), - library: 'predictor', - libraryTarget: 'umd', - umdNamedDefine: true - }, - resolve: { - extensions: ['.ts', '.js'] - }, -}; - -const devConfig = { - mode: 'development', - entry: path.resolve(__dirname, 'src/index.ts'), - output: { - filename: 'predictor.js', - path: path.resolve(__dirname, 'built'), - library: 'predictor', - libraryTarget: 'umd', - umdNamedDefine: true - }, - resolve: { - extensions: ['.ts', '.js'] - }, -}; - -module.exports = merge( - baseConfig, - process.env.WEBPACK_ENV === 'build' ? buildConfig : devConfig -); +});