From 468489073e21ff11ee53588676421dd184fa6d8d Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 10:42:51 -0700 Subject: [PATCH 1/7] Try switching to prebuild vega --- packages/vega5-extension/package.json | 5 +++-- packages/vega5-extension/src/built-vega-embed.d.ts | 1 + packages/vega5-extension/src/index.ts | 2 +- packages/vega5-extension/webpack.config.js | 12 ++++++++++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 packages/vega5-extension/src/built-vega-embed.d.ts create mode 100644 packages/vega5-extension/webpack.config.js diff --git a/packages/vega5-extension/package.json b/packages/vega5-extension/package.json index fcbc3e0e2303..49e9d2686c0b 100644 --- a/packages/vega5-extension/package.json +++ b/packages/vega5-extension/package.json @@ -27,7 +27,7 @@ "lib": "lib/" }, "scripts": { - "build": "tsc -b", + "build": "tsc -b && webpack", "clean": "rimraf lib", "docs": "typedoc --options tdoptions.json --theme ../../typedoc-theme src", "prepublishOnly": "npm run build", @@ -45,7 +45,8 @@ "@types/webpack-env": "^1.13.9", "rimraf": "~2.6.2", "typedoc": "^0.14.2", - "typescript": "~3.5.1" + "typescript": "~3.5.1", + "webpack": "^4.32.2" }, "publishConfig": { "access": "public" diff --git a/packages/vega5-extension/src/built-vega-embed.d.ts b/packages/vega5-extension/src/built-vega-embed.d.ts new file mode 100644 index 000000000000..6d86e5a37aea --- /dev/null +++ b/packages/vega5-extension/src/built-vega-embed.d.ts @@ -0,0 +1 @@ +export * from 'vega-embed'; diff --git a/packages/vega5-extension/src/index.ts b/packages/vega5-extension/src/index.ts index 9057082c6a59..5e5634c93a05 100644 --- a/packages/vega5-extension/src/index.ts +++ b/packages/vega5-extension/src/index.ts @@ -186,7 +186,7 @@ namespace Private { return vegaReady; } - vegaReady = import('vega-embed'); + vegaReady = import('./built-vega-embed') as any; return vegaReady; } diff --git a/packages/vega5-extension/webpack.config.js b/packages/vega5-extension/webpack.config.js new file mode 100644 index 000000000000..f0c75e3523a0 --- /dev/null +++ b/packages/vega5-extension/webpack.config.js @@ -0,0 +1,12 @@ +var path = require('path'); + +module.exports = { + entry: 'vega-embed', + mode: 'production', + devtool: 'source-map', + output: { + path: path.resolve(__dirname, 'lib'), + filename: 'built-vega-embed.js', + libraryTarget: 'commonjs2' + } +}; From 3dee843782e42d5dc916127f1c79e6d5288c0684 Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 11:44:00 -0700 Subject: [PATCH 2/7] Try prebundling vega-embed in extensions --- buildutils/src/ensure-package.ts | 4 +++ buildutils/src/ensure-repo.ts | 4 ++- dev_mode/package.json | 5 --- jupyterlab/staging/package.json | 5 --- package.json | 7 +++- packages/vega4-extension/package.json | 13 +++---- .../vega4-extension/src/built-vega-embed.d.ts | 1 + packages/vega4-extension/src/index.ts | 2 +- packages/vega4-extension/webpack.config.js | 12 +++++++ packages/vega5-extension/package.json | 8 ++--- yarn.lock | 34 +++---------------- 11 files changed, 42 insertions(+), 53 deletions(-) create mode 100644 packages/vega4-extension/src/built-vega-embed.d.ts create mode 100644 packages/vega4-extension/webpack.config.js diff --git a/buildutils/src/ensure-package.ts b/buildutils/src/ensure-package.ts index 257b4bad4e82..1c4e4991b1d6 100644 --- a/buildutils/src/ensure-package.ts +++ b/buildutils/src/ensure-package.ts @@ -59,6 +59,10 @@ export async function ensurePackage( // Verify devDependencies are consistent. promises = Object.keys(devDeps).map(async name => { + if (differentVersions.indexOf(name) !== -1) { + // Skip processing packages that can have different versions + return; + } if (!(name in seenDeps)) { seenDeps[name] = await getDependency(name); } diff --git a/buildutils/src/ensure-repo.ts b/buildutils/src/ensure-repo.ts index ebe1f52c9940..3eb6739df8a5 100644 --- a/buildutils/src/ensure-repo.ts +++ b/buildutils/src/ensure-repo.ts @@ -19,7 +19,9 @@ type Dict = { [key: string]: T }; // Data to ignore. let MISSING: Dict = { - '@jupyterlab/buildutils': ['path'] + '@jupyterlab/buildutils': ['path'], + '@jupyterlab/vega4-extension': ['vega-embed'], + '@jupyterlab/vega5-extension': ['vega-embed'] }; let UNUSED: Dict = { diff --git a/dev_mode/package.json b/dev_mode/package.json index d0a6bfc76010..3ece1d1cb661 100644 --- a/dev_mode/package.json +++ b/dev_mode/package.json @@ -2,11 +2,6 @@ "name": "@jupyterlab/application-top", "version": "1.0.0-alpha.14", "private": true, - "workspaces": { - "nohoist": [ - "@jupyterlab/vega*-extension/vega*/**" - ] - }, "scripts": { "build": "webpack", "build:prod": "node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.prod.config.js", diff --git a/jupyterlab/staging/package.json b/jupyterlab/staging/package.json index c158083e043e..c977e795a83e 100644 --- a/jupyterlab/staging/package.json +++ b/jupyterlab/staging/package.json @@ -2,11 +2,6 @@ "name": "@jupyterlab/application-top", "version": "1.0.0-alpha.14", "private": true, - "workspaces": { - "nohoist": [ - "@jupyterlab/vega*-extension/vega*/**" - ] - }, "scripts": { "build": "webpack", "build:prod": "node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.prod.config.js", diff --git a/package.json b/package.json index a3aed0c23265..1c0bc2d7315d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,12 @@ "jupyterlab/tests/mock_packages/extension" ], "nohoist": [ - "@jupyterlab/vega*-extension/vega*/**" + "**/vega-embed", + "**/vega-lite", + "**/vega", + "**/vega-embed/**", + "**/vega-lite/**", + "**/vega/**" ] }, "scripts": { diff --git a/packages/vega4-extension/package.json b/packages/vega4-extension/package.json index d95efaf339ab..2c4b6b2435e9 100644 --- a/packages/vega4-extension/package.json +++ b/packages/vega4-extension/package.json @@ -27,7 +27,7 @@ "lib": "lib/" }, "scripts": { - "build": "tsc -b", + "build": "tsc -b && webpack", "clean": "rimraf lib", "docs": "typedoc --options tdoptions.json --theme ../../typedoc-theme src", "prepublishOnly": "npm run build", @@ -36,16 +36,17 @@ "dependencies": { "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.13", "@phosphor/coreutils": "^1.3.1", - "@phosphor/widgets": "^1.8.0", - "vega": "^4.4.0", - "vega-embed": "3.18.2", - "vega-lite": "^2.7.0" + "@phosphor/widgets": "^1.8.0" }, "devDependencies": { "@types/webpack-env": "^1.13.9", "rimraf": "~2.6.2", "typedoc": "^0.14.2", - "typescript": "~3.5.1" + "typescript": "~3.5.1", + "vega": "^4.4.0", + "vega-embed": "^4.2.0", + "vega-lite": "^2.7.0", + "webpack": "^4.32.2" }, "publishConfig": { "access": "public" diff --git a/packages/vega4-extension/src/built-vega-embed.d.ts b/packages/vega4-extension/src/built-vega-embed.d.ts new file mode 100644 index 000000000000..6d86e5a37aea --- /dev/null +++ b/packages/vega4-extension/src/built-vega-embed.d.ts @@ -0,0 +1 @@ +export * from 'vega-embed'; diff --git a/packages/vega4-extension/src/index.ts b/packages/vega4-extension/src/index.ts index 67913fef1725..3ab4401e88da 100644 --- a/packages/vega4-extension/src/index.ts +++ b/packages/vega4-extension/src/index.ts @@ -186,7 +186,7 @@ namespace Private { return vegaReady; } - vegaReady = import('vega-embed'); + vegaReady = import('./built-vega-embed') as any; return vegaReady; } diff --git a/packages/vega4-extension/webpack.config.js b/packages/vega4-extension/webpack.config.js new file mode 100644 index 000000000000..f0c75e3523a0 --- /dev/null +++ b/packages/vega4-extension/webpack.config.js @@ -0,0 +1,12 @@ +var path = require('path'); + +module.exports = { + entry: 'vega-embed', + mode: 'production', + devtool: 'source-map', + output: { + path: path.resolve(__dirname, 'lib'), + filename: 'built-vega-embed.js', + libraryTarget: 'commonjs2' + } +}; diff --git a/packages/vega5-extension/package.json b/packages/vega5-extension/package.json index 49e9d2686c0b..4acfe0a80d5c 100644 --- a/packages/vega5-extension/package.json +++ b/packages/vega5-extension/package.json @@ -36,16 +36,16 @@ "dependencies": { "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.13", "@phosphor/coreutils": "^1.3.1", - "@phosphor/widgets": "^1.8.0", - "vega": "^5.4.0", - "vega-embed": "^4.2.0", - "vega-lite": "^3.3.0" + "@phosphor/widgets": "^1.8.0" }, "devDependencies": { "@types/webpack-env": "^1.13.9", "rimraf": "~2.6.2", "typedoc": "^0.14.2", "typescript": "~3.5.1", + "vega": "^5.4.0", + "vega-embed": "^4.2.0", + "vega-lite": "^3.3.0", "webpack": "^4.32.2" }, "publishConfig": { diff --git a/yarn.lock b/yarn.lock index 398780a999fb..5c2cbc146d05 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4039,7 +4039,7 @@ d3-scale@^3.0.0: d3-time "1" d3-time-format "2" -d3-selection@^1.3.0, d3-selection@^1.4.0: +d3-selection@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.0.tgz#ab9ac1e664cf967ebf1b479cc07e28ce9908c474" integrity sha512-EYVwBxQGEjLCKF2pJ4+yrErskDnz5v403qvAid96cNdCMr8rmCYfY5RGzWz24mdIbxmDf6/4EAH+K9xperD5jg== @@ -7151,11 +7151,6 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-pretty-compact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-1.2.0.tgz#0bc316b5e6831c07041fc35612487fb4e9ab98b8" - integrity sha512-/11Pj1OyX814QMKO7K8l85SHPTr/KsFxHp8GE2zVa0BtJgGimDjXHfM3FhC7keQdWDea7+nXf+f1de7ATZcZkQ== - json-stringify-pretty-compact@^2.0.0, json-stringify-pretty-compact@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" @@ -11690,20 +11685,6 @@ vega-dataflow@^5.1.0, vega-dataflow@^5.1.1, vega-dataflow@^5.2.1: vega-loader "^4.0.0" vega-util "^1.10.0" -vega-embed@3.18.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/vega-embed/-/vega-embed-3.18.2.tgz#296fec71455bfcaff19a2adb56bf1155851a50ae" - integrity sha512-OQWRdII4DJgBocGLWiAu7yPFrqGHTxRc6jWnJY19BOdGKOCCBcdqTUmJx1tZw0KvA2YdW5GoNxDqO2cfwqivJw== - dependencies: - d3-selection "^1.3.0" - json-stringify-pretty-compact "^1.2.0" - semver "^5.5.0" - vega-lib "^4.0.0 || ^3.3.0" - vega-lite "^2.6.0" - vega-schema-url-parser "^1.1.0" - vega-themes "^2.1.1" - vega-tooltip "^0.12.0" - vega-embed@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/vega-embed/-/vega-embed-4.2.0.tgz#59e8478faa6e1e33d0eb601a5b98be9b79d4c4ad" @@ -11832,7 +11813,7 @@ vega-hierarchy@^4.0.1: vega-dataflow "^5.1.0" vega-util "^1.8.0" -vega-lib@4.4.0, "vega-lib@^4.0.0 || ^3.3.0": +vega-lib@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/vega-lib/-/vega-lib-4.4.0.tgz#37d99514c5496a0ce001033bdacb504361ef6880" integrity sha512-bfOsO5wks+ctnJ94fIPWH/B0qocdFs4WZ8teIgjF7m5XE+EVln+1nq9Z+sV7wdw7vftzGg0GAx9UH/kJxyopKg== @@ -11860,7 +11841,7 @@ vega-lib@4.4.0, "vega-lib@^4.0.0 || ^3.3.0": vega-voronoi "^3.0.0" vega-wordcloud "^3.0.0" -vega-lite@^2.6.0, vega-lite@^2.7.0: +vega-lite@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/vega-lite/-/vega-lite-2.7.0.tgz#4535a2f8651f0d037b685131943d30f9fa5de6d1" integrity sha512-SqUDFD+1bHP6UgaFnI418XLW1ffcVMlQMdzI4Xh0HGjPKDPdLTF71iNjcTUwtTYt9rRLXRcRKdmCbBzuLtkg8g== @@ -12041,18 +12022,11 @@ vega-statistics@^1.2.1, vega-statistics@^1.2.3, vega-statistics@^1.2.5, vega-sta dependencies: d3-array "^2.0.3" -vega-themes@^2.1.1, vega-themes@^2.3.0: +vega-themes@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/vega-themes/-/vega-themes-2.3.0.tgz#d0a5a3f16af4baeae3e4f43a0b65d7c5479805b1" integrity sha512-C33RC/oB7NAMgAMdfiKy3Akwbn2uaTJSpmS3sRdiThbQxdhyh+iwc+horG4DWK7zYwJa8tITGbXknYoJXPkdIA== -vega-tooltip@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/vega-tooltip/-/vega-tooltip-0.12.0.tgz#014b21b08ea5fe14eb59c9b6643614c77a3b3e47" - integrity sha512-0a1gYQ5NjdVxzSm8ameZGnSocDAW9lB3h6e2Us5L2oTlU6tYI6et1+7qU1yRCycBuUQ/oAUsNbeINVwvsV9UIg== - dependencies: - vega-util "^1.7.0" - vega-tooltip@^0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/vega-tooltip/-/vega-tooltip-0.17.0.tgz#16bb5b57fb727823bb15f4ca4e350622471db2b9" From d601d95abd97ec56d952a8b95393b25cb5a3fd8a Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 11:45:29 -0700 Subject: [PATCH 3/7] Revert "Extract out CSS" 36367263f0526f9b38a120a43611a03159c9aa55 --- dev_mode/webpack.config.js | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/dev_mode/webpack.config.js b/dev_mode/webpack.config.js index 7d93cf16a066..c804f2ddc303 100644 --- a/dev_mode/webpack.config.js +++ b/dev_mode/webpack.config.js @@ -10,7 +10,6 @@ var HtmlWebpackPlugin = require('html-webpack-plugin'); var webpack = require('webpack'); var DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin'); var Visualizer = require('webpack-visualizer-plugin'); -var MiniCssExtractPlugin = require('mini-css-extract-plugin'); var Build = require('@jupyterlab/buildutils').Build; var package_data = require('./package.json'); @@ -126,10 +125,7 @@ const plugins = [ title: jlab.name || 'JupyterLab' }), new webpack.HashedModuleIdsPlugin(), - new JupyterFrontEndPlugin({}), - new MiniCssExtractPlugin({ - filename: '[name].[chunkhash].css' - }) + new JupyterFrontEndPlugin({}) ]; if (process.argv.includes('--analyze')) { @@ -149,24 +145,12 @@ module.exports = [ }, optimization: { splitChunks: { - chunks: 'all', - // Put all CSS in one chunk, otherwise we get some out of order issues - cacheGroups: { - styles: { - name: 'styles', - test: /\.css$/, - chunks: 'all', - enforce: true - } - } + chunks: 'all' } }, module: { rules: [ - { - test: /\.css$/, - use: [MiniCssExtractPlugin.loader, 'css-loader'] - }, + { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, use: 'raw-loader' }, { test: /\.txt$/, use: 'raw-loader' }, { From 3cdcd044f7ead65e3f753e076977f68a16cd4516 Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 11:46:46 -0700 Subject: [PATCH 4/7] Revert "Switch staging to external CSS as well" 367cc4bf21bbc2e85b63f19497650c03795b00cb --- jupyterlab/staging/webpack.config.js | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/jupyterlab/staging/webpack.config.js b/jupyterlab/staging/webpack.config.js index 7d93cf16a066..7864adb56a67 100644 --- a/jupyterlab/staging/webpack.config.js +++ b/jupyterlab/staging/webpack.config.js @@ -10,7 +10,6 @@ var HtmlWebpackPlugin = require('html-webpack-plugin'); var webpack = require('webpack'); var DuplicatePackageCheckerPlugin = require('duplicate-package-checker-webpack-plugin'); var Visualizer = require('webpack-visualizer-plugin'); -var MiniCssExtractPlugin = require('mini-css-extract-plugin'); var Build = require('@jupyterlab/buildutils').Build; var package_data = require('./package.json'); @@ -126,10 +125,7 @@ const plugins = [ title: jlab.name || 'JupyterLab' }), new webpack.HashedModuleIdsPlugin(), - new JupyterFrontEndPlugin({}), - new MiniCssExtractPlugin({ - filename: '[name].[chunkhash].css' - }) + new JupyterFrontEndPlugin({}) ]; if (process.argv.includes('--analyze')) { @@ -149,24 +145,13 @@ module.exports = [ }, optimization: { splitChunks: { - chunks: 'all', - // Put all CSS in one chunk, otherwise we get some out of order issues - cacheGroups: { - styles: { - name: 'styles', - test: /\.css$/, - chunks: 'all', - enforce: true + chunks: 'all' } - } - } }, module: { rules: [ { - test: /\.css$/, - use: [MiniCssExtractPlugin.loader, 'css-loader'] - }, + { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, use: 'raw-loader' }, { test: /\.txt$/, use: 'raw-loader' }, { From 2f977ea7501aaaa758d39199c879dfe336692945 Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 11:59:44 -0700 Subject: [PATCH 5/7] Fix typo in staging webpack --- jupyterlab/staging/webpack.config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jupyterlab/staging/webpack.config.js b/jupyterlab/staging/webpack.config.js index 7864adb56a67..c804f2ddc303 100644 --- a/jupyterlab/staging/webpack.config.js +++ b/jupyterlab/staging/webpack.config.js @@ -146,11 +146,10 @@ module.exports = [ optimization: { splitChunks: { chunks: 'all' - } + } }, module: { rules: [ - { { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.md$/, use: 'raw-loader' }, { test: /\.txt$/, use: 'raw-loader' }, From 75241a59bcc48fda9632d78be130ac51e9c3a821 Mon Sep 17 00:00:00 2001 From: Saul Shanabrook Date: Fri, 21 Jun 2019 12:50:40 -0700 Subject: [PATCH 6/7] Try building vega alongside regular build --- package.json | 3 ++- packages/vega4-extension/package.json | 1 + packages/vega5-extension/package.json | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c0bc2d7315d..4b6e19830bf1 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "analyze:prod": "cd dev_mode && jlpm run build:prod --analyze && opn static/stats.html", "build": "jlpm run build:dev", "build:core": "cd jupyterlab/staging && jlpm && (jlpm deduplicate || jlpm) && jlpm run build", - "build:dev": "jlpm run integrity && jlpm run build:packages && cd dev_mode && jlpm run build", + "build:dev": "jlpm run integrity && jlpm run build:vega && jlpm run build:packages && cd dev_mode && jlpm run build", "build:dev:prod": "jlpm run integrity && jlpm run build:packages && cd dev_mode && jlpm run build:prod", "build:examples": "lerna run build --scope \"@jupyterlab/example-*\"", "build:packages": "cd packages/metapackage && jlpm run build", @@ -40,6 +40,7 @@ "build:test": "lerna run build --scope \"@jupyterlab/test-*\" --concurrency 1", "build:testutils": "cd testutils && jlpm run build", "build:utils": "cd buildutils && jlpm run build", + "build:vega": "lerna run build:webpack --scope \"@jupyterlab/vega*-extension\" --concurrency 1", "bump:js:major": "node buildutils/lib/bump-js-major.js", "bumpversion": "node buildutils/lib/bumpversion.js", "clean": "jlpm run clean:dev && jlpm run clean:packages", diff --git a/packages/vega4-extension/package.json b/packages/vega4-extension/package.json index 2c4b6b2435e9..430ae6c09073 100644 --- a/packages/vega4-extension/package.json +++ b/packages/vega4-extension/package.json @@ -28,6 +28,7 @@ }, "scripts": { "build": "tsc -b && webpack", + "build:webpack": "webpack", "clean": "rimraf lib", "docs": "typedoc --options tdoptions.json --theme ../../typedoc-theme src", "prepublishOnly": "npm run build", diff --git a/packages/vega5-extension/package.json b/packages/vega5-extension/package.json index 4acfe0a80d5c..4f23c0059eef 100644 --- a/packages/vega5-extension/package.json +++ b/packages/vega5-extension/package.json @@ -28,6 +28,7 @@ }, "scripts": { "build": "tsc -b && webpack", + "build:webpack": "webpack", "clean": "rimraf lib", "docs": "typedoc --options tdoptions.json --theme ../../typedoc-theme src", "prepublishOnly": "npm run build", From 206321246a0847b5b25420175ae0af880c6a4e69 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Fri, 21 Jun 2019 15:13:01 -0700 Subject: [PATCH 7/7] Disable add:sibling in CI for now. --- scripts/travis_script.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/travis_script.sh b/scripts/travis_script.sh index aee455e06612..fefc0e3fd774 100644 --- a/scripts/travis_script.sh +++ b/scripts/travis_script.sh @@ -153,11 +153,11 @@ if [[ $GROUP == usage ]]; then jupyter labextension disable -h # Make sure we can add and remove a sibling package. - jlpm run add:sibling jupyterlab/tests/mock_packages/extension - jlpm run build - jlpm run remove:package extension - jlpm run build - jlpm run integrity --force # Should have a clean tree now + # jlpm run add:sibling jupyterlab/tests/mock_packages/extension + # jlpm run build + # jlpm run remove:package extension + # jlpm run build + # jlpm run integrity --force # Should have a clean tree now # Test cli tools jlpm run get:dependency mocha