From 30a7de08cd17977ae56d3a7e479226e08ef82501 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 4 May 2020 23:40:31 -0400 Subject: [PATCH] Do that --- packages/react-json-tree/.eslintignore | 1 - packages/react-json-tree/package.json | 8 +++- ...ck.config.umd.js => webpack.config.umd.ts} | 37 +++++++++------- yarn.lock | 44 ++++++++++++++++--- 4 files changed, 67 insertions(+), 23 deletions(-) rename packages/react-json-tree/{webpack.config.umd.js => webpack.config.umd.ts} (50%) diff --git a/packages/react-json-tree/.eslintignore b/packages/react-json-tree/.eslintignore index 2c3ba010..79681bfb 100644 --- a/packages/react-json-tree/.eslintignore +++ b/packages/react-json-tree/.eslintignore @@ -1,3 +1,2 @@ lib umd -webpack.config.umd.js diff --git a/packages/react-json-tree/package.json b/packages/react-json-tree/package.json index 33e9f9f4..e3e7cb35 100644 --- a/packages/react-json-tree/package.json +++ b/packages/react-json-tree/package.json @@ -10,8 +10,8 @@ "build": "npm run build:types && npm run build:js", "build:types": "tsc --emitDeclarationOnly", "build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline", - "build:umd": "rimraf ./umd && webpack --progress --config webpack.config.umd.js", - "build:umd:min": "webpack --env.minimize --progress --config webpack.config.umd.js", + "build:umd": "rimraf ./umd && webpack --progress --config webpack.config.umd.ts", + "build:umd:min": "webpack --env.minimize --progress --config webpack.config.umd.ts", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix", "test": "jest", @@ -51,7 +51,10 @@ "@babel/preset-env": "^7.3.1", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.9.0", + "@types/node": "^13.13.4", "@types/react": "^15.0.0 || ^16.0.0", + "@types/terser-webpack-plugin": "^2.2.0", + "@types/webpack": "^4.41.12", "@typescript-eslint/eslint-plugin": "^2.31.0", "@typescript-eslint/parser": "^2.31.0", "babel-loader": "^8.0.5", @@ -61,6 +64,7 @@ "react-test-renderer": "^16.0.0", "rimraf": "^2.5.2", "terser-webpack-plugin": "^1.2.1", + "ts-node": "^8.10.1", "typescript": "^3.8.3", "webpack": "^4.27.1", "webpack-cli": "^3.2.0" diff --git a/packages/react-json-tree/webpack.config.umd.js b/packages/react-json-tree/webpack.config.umd.ts similarity index 50% rename from packages/react-json-tree/webpack.config.umd.js rename to packages/react-json-tree/webpack.config.umd.ts index 82252535..09044d1a 100644 --- a/packages/react-json-tree/webpack.config.umd.js +++ b/packages/react-json-tree/webpack.config.umd.ts @@ -1,31 +1,36 @@ -/* eslint-env node */ +import * as path from 'path'; +import * as webpack from 'webpack'; +import TerserPlugin from 'terser-webpack-plugin'; -const path = require('path'); -const TerserPlugin = require('terser-webpack-plugin'); +function isMinimizeSet( + env: string | Record +) { + return (env as { minimize: boolean }).minimize; +} -module.exports = (env = {}) => ({ +const config: webpack.ConfigurationFactory = (env = {}) => ({ mode: 'production', - entry: { - app: ['./src/index.tsx'] - }, + entry: './src/index', output: { library: 'ReactJsonTree', libraryTarget: 'umd', path: path.resolve(__dirname, 'umd'), - filename: env.minimize ? 'react-json-tree.min.js' : 'react-json-tree.js' + filename: isMinimizeSet(env) + ? 'react-json-tree.min.js' + : 'react-json-tree.js' + }, + resolve: { + extensions: ['.ts', '.tsx', '.js', '.json'] }, module: { rules: [ { - test: /\.tsx?$/, - loader: 'babel-loader', - exclude: /node_modules/ + test: /\.(ts|js)x?$/, + exclude: /node_modules/, + loader: 'babel-loader' } ] }, - resolve: { - extensions: ['.js', '.jsx', '.ts', '.tsx'] - }, externals: { react: { root: 'React', @@ -41,7 +46,7 @@ module.exports = (env = {}) => ({ } }, optimization: { - minimize: !!env.minimize, + minimize: isMinimizeSet(env), minimizer: [ new TerserPlugin({ terserOptions: { @@ -54,3 +59,5 @@ module.exports = (env = {}) => ({ hints: false } }); + +export default config; diff --git a/yarn.lock b/yarn.lock index 6c3bdb2d..d9b7af60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2637,7 +2637,7 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*", "@types/node@>= 8": +"@types/node@*", "@types/node@>= 8", "@types/node@^13.13.4": version "13.13.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== @@ -2680,6 +2680,14 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== +"@types/terser-webpack-plugin@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@types/terser-webpack-plugin/-/terser-webpack-plugin-2.2.0.tgz#b1561e3118b9319d80ff65798c345877669b3e12" + integrity sha512-ywqEfTm7KdKoX9aYx0zYtiFU1z6IHrIYW9FJqeay2Ea58rTPML1J0hvoztGal2Jow3bkgGKcAmEZNL+8LqUVrA== + dependencies: + "@types/webpack" "*" + terser "^4.3.9" + "@types/uglify-js@*": version "3.9.0" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.0.tgz#4490a140ca82aa855ad68093829e7fd6ae94ea87" @@ -2696,7 +2704,7 @@ "@types/source-list-map" "*" source-map "^0.6.1" -"@types/webpack@^4.41.8": +"@types/webpack@*", "@types/webpack@^4.41.12", "@types/webpack@^4.41.8": version "4.41.12" resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.12.tgz#0386ee2a2814368e2f2397abb036c0bf173ff6c3" integrity sha512-BpCtM4NnBen6W+KEhrL9jKuZCXVtiH6+0b6cxdvNt2EwU949Al334PjQSl2BeAyvAX9mgoNNG21wvjP3xZJJ5w== @@ -3272,6 +3280,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -5982,6 +5995,11 @@ diff-sequences@^24.9.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -10810,7 +10828,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-error@^1.3.5: +make-error@^1.1.1, make-error@^1.3.5: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -15191,7 +15209,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.1, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.1, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -15977,7 +15995,7 @@ terser-webpack-plugin@^1.2.1, terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2, terser@^4.6.3: +terser@^4.1.2, terser@^4.3.9, terser@^4.6.3: version "4.6.13" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916" integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw== @@ -16219,6 +16237,17 @@ ts-invariant@^0.4.0: dependencies: tslib "^1.9.3" +ts-node@^8.10.1: + version "8.10.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.1.tgz#77da0366ff8afbe733596361d2df9a60fc9c9bd3" + integrity sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" @@ -17280,6 +17309,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yup@^0.27.0: version "0.27.0" resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"