Pārlūkot izejas kodu

clean up and fix dev watch mode

Steven Silvester 7 gadi atpakaļ
vecāks
revīzija
4bb5ca635a
3 mainītis faili ar 69 papildinājumiem un 12 dzēšanām
  1. 53 1
      jupyterlab/package.json
  2. 3 1
      jupyterlab/update-core.js
  3. 13 10
      jupyterlab/webpack.config.js

+ 53 - 1
jupyterlab/package.json

@@ -131,6 +131,58 @@
       "@phosphor/widgets"
     ],
     "version": "0.29.0.dev0",
-    "linkedPackages": {}
+    "linkedPackages": {
+      "@jupyterlab/application": "../packages/application",
+      "@jupyterlab/application-extension": "../packages/application-extension",
+      "@jupyterlab/apputils": "../packages/apputils",
+      "@jupyterlab/apputils-extension": "../packages/apputils-extension",
+      "@jupyterlab/buildutils": "../packages/buildutils",
+      "@jupyterlab/cells": "../packages/cells",
+      "@jupyterlab/codeeditor": "../packages/codeeditor",
+      "@jupyterlab/codemirror": "../packages/codemirror",
+      "@jupyterlab/codemirror-extension": "../packages/codemirror-extension",
+      "@jupyterlab/completer": "../packages/completer",
+      "@jupyterlab/completer-extension": "../packages/completer-extension",
+      "@jupyterlab/console": "../packages/console",
+      "@jupyterlab/console-extension": "../packages/console-extension",
+      "@jupyterlab/coreutils": "../packages/coreutils",
+      "@jupyterlab/csvviewer": "../packages/csvviewer",
+      "@jupyterlab/csvviewer-extension": "../packages/csvviewer-extension",
+      "@jupyterlab/docmanager": "../packages/docmanager",
+      "@jupyterlab/docmanager-extension": "../packages/docmanager-extension",
+      "@jupyterlab/docregistry": "../packages/docregistry",
+      "@jupyterlab/faq-extension": "../packages/faq-extension",
+      "@jupyterlab/filebrowser": "../packages/filebrowser",
+      "@jupyterlab/filebrowser-extension": "../packages/filebrowser-extension",
+      "@jupyterlab/fileeditor": "../packages/fileeditor",
+      "@jupyterlab/fileeditor-extension": "../packages/fileeditor-extension",
+      "@jupyterlab/help-extension": "../packages/help-extension",
+      "@jupyterlab/imageviewer": "../packages/imageviewer",
+      "@jupyterlab/imageviewer-extension": "../packages/imageviewer-extension",
+      "@jupyterlab/inspector": "../packages/inspector",
+      "@jupyterlab/inspector-extension": "../packages/inspector-extension",
+      "@jupyterlab/launcher": "../packages/launcher",
+      "@jupyterlab/launcher-extension": "../packages/launcher-extension",
+      "@jupyterlab/markdownviewer-extension": "../packages/markdownviewer-extension",
+      "@jupyterlab/notebook": "../packages/notebook",
+      "@jupyterlab/notebook-extension": "../packages/notebook-extension",
+      "@jupyterlab/outputarea": "../packages/outputarea",
+      "@jupyterlab/pdf-extension": "../packages/pdf-extension",
+      "@jupyterlab/rendermime": "../packages/rendermime",
+      "@jupyterlab/rendermime-interfaces": "../packages/rendermime-interfaces",
+      "@jupyterlab/running": "../packages/running",
+      "@jupyterlab/running-extension": "../packages/running-extension",
+      "@jupyterlab/services": "../packages/services",
+      "@jupyterlab/settingeditor-extension": "../packages/settingeditor-extension",
+      "@jupyterlab/shortcuts-extension": "../packages/shortcuts-extension",
+      "@jupyterlab/tabmanager-extension": "../packages/tabmanager-extension",
+      "@jupyterlab/terminal": "../packages/terminal",
+      "@jupyterlab/terminal-extension": "../packages/terminal-extension",
+      "@jupyterlab/theme-dark-extension": "../packages/theme-dark-extension",
+      "@jupyterlab/theme-light-extension": "../packages/theme-light-extension",
+      "@jupyterlab/tooltip": "../packages/tooltip",
+      "@jupyterlab/tooltip-extension": "../packages/tooltip-extension",
+      "@jupyterlab/vega2-extension": "../packages/vega2-extension"
+    }
   }
 }

+ 3 - 1
jupyterlab/update-core.js

@@ -34,9 +34,11 @@ packages.forEach(function(packagePath) {
 
   // Make sure it is included as a dependency.
   corePackage.dependencies[data.name] = '^' + String(data.version);
+  var relativePath = '../packages/' + path.basename(packagePath);
+  corePackage.jupyterlab.linkedPackages[data.name] = relativePath;
 
   // Add its dependencies to the core dependencies if they are in the
-  // singletonpackages.
+  // singleton packages.
   var deps = data.dependencies || [];
   for (var dep in deps) {
     if (singletonPackages.indexOf(dep) !== -1) {

+ 13 - 10
jupyterlab/webpack.config.js

@@ -35,7 +35,7 @@ fs.writeFileSync(path.resolve(buildDir, 'index.out.js'), result);
 
 // Handle watch mode for the linked packages.
 var localLinked = {};
-var watchedPaths = [];
+var seenPaths = [];
 if (process.argv.indexOf('--watch') !== -1) {
   Object.keys(jlab.linkedPackages).forEach(function (name) {
     var localPath = require.resolve(path.join(name, 'package.json'));
@@ -45,17 +45,20 @@ if (process.argv.indexOf('--watch') !== -1) {
 
 
 /**
- * Watch a local path if it is a file that has not been seen.
+ * Sync a local path to a linked package path if appropriate.
  */
-function maybeWatch(localPath, name) {
+function mabyeSync(localPath, name) {
   var stats = fs.statSync(localPath);
-  if (!stats.isFile(localPath) || watchedPaths.indexOf(localPath) !== -1) {
+  if (!stats.isFile(localPath) || seenPaths.indexOf(localPath) !== -1) {
     return;
   }
-  watchedPaths.push(localPath);
+  seenPaths.push(localPath);
   var rootPath = localLinked[name];
   var rest = localPath.slice(rootPath.length);
-  var source = path.join(jlab.linkedPackages[name], rest);
+  var source = fs.realpathSync(path.join(jlab.linkedPackages[name], rest));
+  if (source === localPath) {
+    return;
+  }
   fs.watchFile(source, { "interval": 500 }, function(curr) {
     if (!curr || curr.nlink === 0) {
       return;
@@ -107,12 +110,12 @@ module.exports = {
       var ignore = true;
       Object.keys(localLinked).forEach(function (name) {
         var rootPath = localLinked[name];
-        if (localPath.slice(0, rootPath.length) === rootPath) {
-          var stats = fs.statSync(localPath);
-          var rest = source.slice(rootPath.length);
+        var contained = localPath.indexOf(rootPath + path.sep) !== -1;
+        if (localPath === rootPath || contained) {
+          var rest = localPath.slice(rootPath.length);
           if (rest.indexOf('node_modules') === -1) {
             ignore = false;
-            maybeWatch(localPath, name);
+            mabyeSync(localPath, name);
           }
         }
       });