ImportJS ist ein Tool zum automatischen Importieren von Abhängigkeiten in Ihr JavaScript-Projekt. Verwenden Sie es zusammen mit einer unserer Editor-Integrationen für Atom, Emacs, Sublime, Vim oder VS Code.
Es gibt ImportJS-Plugins für die folgenden Editoren:
Detaillierte Anweisungen zur Installation von ImportJS finden Sie in den Editor-Links oben.
Möchten Sie der Liste einen weiteren Editor hinzufügen? Erfahren Sie, wie Sie einen Beitrag leisten können.
ImportJS verwendet Babel 7 ab Version 3.1.0. In den meisten Fällen ist Babel 7 abwärtskompatibel mit Babel 6, aber wenn Sie auf Probleme stoßen (wie dieses mit Dekoratoren), sollten Sie die Installation einer früheren Version von ImportJS (z. B. 3.0.0) in Betracht ziehen oder Ihr Projekt auf Babel 7 aktualisieren kompatibel.
Nehmen wir an, Sie haben ein JavaScript-Projekt mit der folgenden Struktur:
.
|-- index.html
|-- components
| |-- button.js
| |-- icon.js
|-- vendor
| |--
|-- pages
| |-- index.js
Stellen Sie sich nun vor, dass Sie pages/index.js
bearbeiten, das Folgendes enthält:
document . createElement ( new Button ( { text : 'Save' } ) . toDOMElement ( ) ) ;
Zu diesem Zeitpunkt ist Button
undefiniert, daher müssen wir ihn importieren. Wenn Sie es gewohnt sind, dies manuell zu tun, müssen Sie den Pfad zum JavaScript-Modul herausfinden, das Button
definiert. Mit ImportJS platzieren Sie stattdessen Ihren Cursor auf dem Wort „Button“ und drücken dann <leader>j
(Vim), (Mx) import-js-import
(Emacs) oder wählen Sie „ImportJS: Wort unter Cursor importieren“ (Sublime). Der Dateipuffer ändert sich nun wie folgt:
import Button from '../components/button' ;
document . createElement ( new Button ( { text : 'Save' } ) . toDOMElement ( ) ) ;
Das ist es im Grunde. ImportJS hilft Ihnen, Module zu finden und import
automatisch hinzuzufügen. Aber lesen Sie weiter, um weitere nette Funktionen zu entdecken.
Mit ImportJS können alle Importe in der aktuellen Datei automatisch korrigiert werden. Durch Drücken von <leader>i
(Vim), (Mx) import-js-fix
(Emacs) oder durch Auswahl von ImportJS: fix all imports
(Sublime) werden alle Ihre undefinierten Variablen aufgelöst und alle nicht verwendeten Importe entfernt.
Wenn Sie JSX verwenden, importiert ImportJS React
nicht mehr automatisch für Sie. Wenn Sie dies benötigen, ziehen Sie bitte die Verwendung von ImportJS Version 5.1.0 oder früher in Betracht. Die Notwendigkeit für React-Importe zur Verwendung von JSX wurde in React 17 entfernt. Lesen Sie hier mehr
Da ImportJS ziemlich gut darin ist, JS-Module zu finden, ist es sinnvoll, dass es eine Option gibt, eine Datei zu öffnen/zu einer Datei zu wechseln, anstatt sie zu importieren. Dies ähnelt der in Vim integrierten Option „Datei unter dem Cursor öffnen“. Verwenden Sie es, indem Sie den Cursor auf eine Variable setzen und <leader>g
(Vim), (Mx) import-js-goto
(Emacs) drücken oder „ImportJS: goto module“ (Sublime) wählen.
.js*
und .ts*
berücksichtigtgroupImports
und sortImports
. Kommentare und Leerzeichen bleiben erhalten, wenn beide deaktiviert sind. ImportJS wird über eine JavaScript-Datei ( .importjs.js
) konfiguriert.
Die Datei muss ein einzelnes Objekt exportieren, das Ihre Konfigurationseinstellungen enthält, wie im folgenden Beispiel.
module . exports = {
excludes : [ './react-components/**/test/**' ] ,
// continue with the rest of your settings...
} ;
Speichern Sie diese Datei im Stammordner Ihres Projekts (z. B. dort, wo sich die Datei package.json befindet). Sie können es auch im Home-Verzeichnis des Benutzers speichern, wenn Sie eine globale Konfiguration zwischen verschiedenen Projekten teilen möchten.
Die folgenden Konfigurationsoptionen werden unterstützt.
aliases
danglingCommas
declarationKeyword
emptyLineBetweenGroups
environments
excludes
globals
groupImports
ignorePackagePrefixes
importDevDependencies
importFunction
importStatementFormatter
logLevel
maxLineLength
mergableOptions
minimumVersion
moduleNameFormatter
namedExports
parserPlugins
sortImports
stripFileExtensions
tab
useRelativePaths
aliases
Einige Variablennamen lassen sich möglicherweise nicht einfach einer Datei im Dateisystem zuordnen. Für diese können Sie sie zur aliases
-Konfiguration hinzufügen.
aliases: {
$ : 'third-party-libs/jquery' ,
_ : 'third-party-libs/underscore' ,
}
danglingCommas
Standardmäßig fügt ImportJS abschließende Kommas hinzu, wenn Importanweisungen mit mehreren benannten Importen erstellt werden.
Sie können dieses Verhalten deaktivieren, indem Sie danglingCommas
auf false
setzen.
danglingCommas: false ;
declarationKeyword
Der Standardwert für diese Eigenschaft ist import
, sodass Ihre Importanweisungen die ES2015-Modulsyntax verwenden:
import Foo from 'foo' ;
Aliase können mithilfe der Zeichenfolge {filename}
dynamisch gemacht werden. Dieser Teil des Alias wird durch den Namen der Datei ersetzt, die Sie gerade bearbeiten.
z.B
aliases: {
styles : './{filename}.scss' ,
}
wird für eine Datei foo/bar.js
ergeben
import styles from './bar.scss' ;
emptyLineBetweenGroups
Standardmäßig fügt ImportJS leere Zeilen zwischen Importgruppen ein.
Sie können dieses Verhalten deaktivieren, indem Sie emptyLineBetweenGroups
auf false
setzen.
emptyLineBetweenGroups: false ;
environments
Diese Umgebungsliste steuert, welche Kernmodule beim Import verfügbar sind und welche Variablen standardmäßig als global gelten. Die derzeit unterstützten Werte sind
['meteor']
- stellt die Kernmodule für Meteor zur Verfügung und fügt eine Reihe von Meteor-Globals hinzu['node']
– alle Kernmodule für Node verfügbar machen und eine Reihe von Node-Globals hinzufügen['browser']
– eine Reihe von Browser-Globals hinzufügen['jasmine']
– füge eine Reihe von Jasmin-Globals hinzu['jest']
– Fügen Sie eine Reihe von Jest-Globals hinzuenvironments: [ 'meteor' , 'node' ] ;
excludes
Definieren Sie eine Liste von Glob-Mustern, die Dateien und Verzeichnissen entsprechen, die Sie nicht zum Importieren einschließen möchten.
excludes: [ './react-components/**/test/**' ] ;
globals
Stellen Sie eine Liste der im Code verwendeten globalen Bezeichner bereit. ImportJS ignoriert diese, wenn versucht wird, alle undefinierten Variablen zu importieren.
Hinweis: Wenn Sie die environments
korrekt verwenden, müssen Sie möglicherweise keine Globals angeben .
groupImports
Standardmäßig ordnet ImportJS Importe in Gruppen ein:
Sie können dieses Verhalten deaktivieren, indem Sie groupImports
auf false
setzen. Wenn diese Option deaktiviert ist, werden Importe alphabetisch in einer Liste aufgelistet.
groupImports: false ;
ignorePackagePrefixes
Wenn Sie in package.json
Paketabhängigkeiten angegeben haben, denen beispielsweise ein Organisationsname vorangestellt ist, Sie diese aber ohne das Paketpräfix importieren möchten, können Sie die Konfigurationsoption ignorePackagePrefixes
festlegen.
ignorePackagePrefixes: [ 'my-company-' ] ;
Wenn Paketabhängigkeiten übereinstimmen, werden diese Präfixe ignoriert. Beispielsweise würde eine Variable namens validator
mit einem Paket namens my-company-validator
übereinstimmen.
importDevDependencies
ImportJS sucht beim Import nach Paketabhängigkeiten, die in package.json
aufgeführt sind. Standardmäßig werden nur die unter dependencies
und peerDependencies
aufgeführten Module verwendet. Wenn Sie importDevDependencies
auf true
setzen, werden auch devDependencies
berücksichtigt.
importDevDependencies: true ;
importFunction
Hinweis: Dies gilt nur, wenn Sie var
oder const
als declarationKeyword
verwenden.
Der Standardwert für diese Konfigurationsoption ist "require"
, der standardmäßige CommonJS-Funktionsname, der für den Import verwendet wird.
importFunction: 'myCustomRequireFunction' ;
importStatementFormatter
Verwenden Sie hier eine Funktion, um zu steuern, wie die resultierende Importanweisung aussehen wird. Dies ist nützlich, wenn Sie beispielsweise abschließende Semikolons entfernen möchten (die ImportJS standardmäßig hinzufügt).
Hinweis: Diese Methode sollte nur in seltenen Fällen verwendet werden. Es besteht die Möglichkeit, dass ImportJS die resultierende Importanweisung beim nächsten Import nicht erkennen kann.
importStatementFormatter ( { importStatement } ) {
return importStatement . replace ( / ;$ / , '' ) ;
} ,
logLevel
Einer von ["debug", "info", "warn", "error"]
. Dies steuert, was in der Protokolldatei landet. Der Standardwert ist info
.
logLevel: 'debug' ;
Die Protokolldatei wird in „importjs.log“ im Standardverzeichnis Ihres Betriebssystems für temporäre Dateien geschrieben. Sie können den Pfad zur Protokolldatei abrufen, indem Sie importjs logpath
ausführen.
maxLineLength
Der Standardwert ist 80
. Diese Einstellung steuert, wann Importanweisungen in mehrere Zeilen aufgeteilt werden.
maxLineLength: 70 ;
mergableOptions
Ein Wörterbuch mit Optionen, die mit den von einer environment
bereitgestellten Standardwerten und Werten zusammengeführt werden. Dies kann verwendet werden, um von Umgebungen bereitgestellte Optionen zu überschreiben. Standardmäßig:
mergableOptions: {
aliases : true ,
coreModules : true ,
namedExports : true ,
globals : true ,
}
Hinweis: Die Option mergableOptions
wird immer zusammengeführt und ignoriert, wenn sie in einer Benutzerkonfiguration enthalten ist.
Um das Zusammenführen einer bestimmten Option oder eines Satzes von Optionen zu deaktivieren, legen Sie den Schlüssel auf false
fest:
mergableOptions: {
globals: false ;
}
Wenn Sie beispielsweise die meteor
-Umgebung verwenden, aber explizit Module importieren möchten, die als Globals bereitgestellt werden, können Sie diese Einstellung verwenden, um die Umgebungs-Globals zu überschreiben.
const globals = require ( 'globals' ) ;
module . exports = {
environments : [ 'meteor' , 'node' ] ,
mergableOptions : {
globals : false , // Overwrite globals
} ,
globals : [
// Add the globals you want back in
... Object . keys ( globals . builtin ) , // include javascript builtins
... Object . keys ( globals . node ) , // include node globals
'Package' ,
'Npm' , // Include meteor globals for `package.js` files
] ,
} ;
minimumVersion
Wenn Sie minimumVersion
festlegen, werden Personen gewarnt, die eine Version von ImportJS ausführen, die älter ist als die für Ihre .importjs.js
Konfigurationsdatei erforderliche Version. Wenn Ihre Plugin-Version älter als dieser Wert ist, wird Ihnen eine Warnung angezeigt, die Sie dazu auffordert, Ihr Plugin zu aktualisieren.
minimumVersion: '1.0.0' ;
moduleNameFormatter
Verwenden Sie hier eine Funktion, um zu steuern, wie die resultierende Modulnamenzeichenfolge aussehen wird. Dies ist nützlich, wenn Sie beispielsweise bestimmten Importen ein benutzerdefiniertes Präfix hinzufügen möchten. Neben den Standardwerten pathToCurrentFile
und pathToImportedModule
die an alle Konfigurationsfunktionen übergeben werden, wird dieser Methode auch ein moduleName
Wert übergeben, den Sie im Allgemeinen bearbeiten möchten.
moduleNameFormatter ( { moduleName , pathToCurrentFile } ) {
if ( / -test / . test ( pathToCurrentFile ) ) {
// Import a mocked version in test files
return `mocks/ ${ moduleName } ` ;
}
if ( moduleName . startsWith ( 'foo' ) ) {
// Add a leading slash to foo imports
return `/ ${ moduleName } ` ;
}
// Fall back to the original specifier. It's important that this function
// always returns a string.
return moduleName ;
} ,
namedExports
*Hinweis: Seit 2.1.0 findet ImportJS Ihre benannten Exporte automatisch. Höchstwahrscheinlich benötigen Sie diese Option nicht. Wenn Sie diese Konfiguration am Ende trotzdem verwenden müssen, liegt möglicherweise ein Fehler in den Export-Suchteilen von ImportJS vor. Melden Sie ein Problem und erzählen Sie uns davon!
Wenn Sie über ein ES6/ES2015-Modul verfügen, das mehrere Dinge exportiert (benannte Exporte), oder über ein CommonJS-Modul, das ein Objekt mit Eigenschaften darauf exportiert, die Sie beim Importieren zerstören möchten, können Sie diese zu einer namedExports
-Konfigurationsoption hinzufügen.
namedExports: {
underscore : [
'omit' ,
'debounce' ,
'memoize'
] ,
'lib/utils' : [
'escape' ,
'hasKey' ,
] ,
}
Importe, die das Schlüsselwort import
“ verwenden, verwenden dann die benannte Importsyntax. z.B
import { memoize } from 'underscore' ;
memoize ( ( ) => {
foo ( ) ;
} ) ;
und Importe, die const
oder var
verwenden, verwenden [ES2015 Destructuring Assignment][Destructing Assignment], z
const { memoize } = require ( 'underscore' ) ;
memoize ( ( ) => {
foo ( ) ;
} ) ;
Der zur Beschreibung der benannten Exporte verwendete Schlüssel sollte ein gültiger Importpfad sein. Dies kann beispielsweise der Name eines unter node_modules
gefundenen Pakets, ein Pfad zu einem von Ihnen selbst erstellten Modul oder ein relativer Importpfad sein.
Betrachten Sie das Beispiel als gültigen Anwendungsfall für die Eigenschaft namedExports
. Nehmen wir an, wir haben eine Datei:
import { Provider } from 'react-redux' ;
import React from 'react' ;
import store from './redux/redux-store' ;
import ReactDOM from 'react-dom' ;
import App from './App' ;
ReactDOM . render (
< BrowserRouter >
< Provider store = { store } >
< App / >
< / Provider >
< / BrowserRouter > ,
document . getElementById ( 'root' ) ,
) ;
Und wir werden BrowserRouter
importieren, aber statt des gewünschten Ergebnisses erhalten wir die Meldung „No JS module to import for BrowserRouter
“ . Um das Problem zu beheben, füllen Sie namedExports
wie folgt in Ihre Konfigurationsdatei ein:
namedExports: {
'react-router-dom' : [ 'BrowserRouter' , 'Route' , 'Redirect' ]
}
Danach können wir BrowserRouter
korrekt importieren. Die resultierende Importanweisung sieht folgendermaßen aus:
import { BrowserRouter } from 'react-router-dom'
Wenn Sie noch nicht bereit für ES2015 sind, haben Sie die Möglichkeit, stattdessen var
oder const
zu verwenden.
declarationKeyword: 'const' ;
In einem solchen Fall sehen Ihre Importanweisungen etwa so aus:
var Foo = require ( 'foo' ) ; // "declarationKeyword": "var"
const Foo = require ( 'foo' ) ; // "declarationKeyword": "const"
parserPlugins
ImportJS stellt standardmäßig einen angemessenen Kompromiss für die zu unterstützende Syntax ein, kann jedoch in der Konfiguration überschrieben (ersetzt) werden. Die aktuellsten Standardeinstellungen finden Sie hier
Verfügbare Plugins finden Sie unter Babel: Plugins-Liste
parserPlugins: [ ]
hack
-Vorschlag) Wenn parserPlugins
angegeben ist, müssen Sie die Standardeinstellungen erneut hinzufügen.
parserPlugins: [
'jsx' ,
'doExpressions' ,
'objectRestSpread' ,
'decorators-legacy' ,
'classProperties' ,
'classPrivateProperties' ,
'classPrivateMethods' ,
'exportExtensions' ,
'asyncGenerators' ,
'functionBind' ,
'functionSent' ,
'dynamicImport' ,
'numericSeparator' ,
'optionalChaining' ,
'importMeta' ,
'bigInt' ,
'optionalCatchBinding' ,
'throwExpressions' ,
'nullishCoalescingOperator' ,
'exportNamespaceFrom' ,
'exportDefaultFrom' ,
[
'pipelineOperator' ,
{
proposal : 'hack' ,
} ,
] ,
] ;
sortImports
Standardmäßig sortiert ImportJS Importe nach dem Namen oder Pfad des importierten Moduls.
Sie können dieses Verhalten deaktivieren, indem Sie sortImports
auf false
setzen. Wenn die Option deaktiviert ist, werden vorhandene Importe nicht neu angeordnet und neue Importe werden immer über vorhandenen Importen hinzugefügt.
sortImports: false ;
stripFileExtensions
Ein Array, das steuert, welche Dateierweiterungen aus der resultierenden Importanweisung entfernt werden. Die Standardkonfiguration entfernt [".js", ".jsx", ".ts", ".tsx"]
. Auf ein leeres Array []
setzen, um das Entfernen von Erweiterungen zu vermeiden.
stripFileExtensions: [ '.web.js' , '.js' ] ;
tab
Standardmäßig sind es zwei Leerzeichen ( " "
). Diese Einstellung steuert, wie Einrückungen erstellt werden, wenn Importanweisungen in mehrere Zeilen unterteilt werden.
tab: 't' ;
useRelativePaths
Diese Option ist standardmäßig aktiviert. Wenn diese Option aktiviert ist, werden Importe relativ zur aktuell bearbeiteten Datei aufgelöst.
import Foo from './foo' ;
import Bar from '../baz/bar' ;
Sie können dies deaktivieren, indem Sie es auf „false“ setzen:
useRelativePaths: false ;
Paketabhängigkeiten (befindet sich in node_modules
) werden nicht relativ importiert.
Für verschiedene Abschnitte Ihrer Anwendung gelten möglicherweise besondere Importanforderungen. Beispielsweise benötigen Ihre Tests möglicherweise das Deklarationsschlüsselwort 'const'
, der Rest Ihrer Anwendung kann jedoch 'import'
verwenden. Um auf diese Sonderfälle abzielen zu können, können Sie Ihre Konfigurationsoption in eine Funktion umwandeln. Wenn ImportJS eine Konfigurationsoption auflöst, prüft es, ob eine Funktion verwendet wird. In einem solchen Fall wird die Funktion mit den folgenden Argumenten aufgerufen:
pathToCurrentFile
: (immer verfügbar) Ein Pfad zu der Datei, die Sie bearbeiten.pathToImportedModule
(für einige Optionen nicht verfügbar) Ein Pfad zu der Datei/dem Modul, die/das Sie importieren. Hier ist ein Beispiel für die dynamische Steuerung der Konfigurationsoption declarationKeyword
basierend auf der Datei, die Sie importieren:
// .importjs.js
function isTestFile ( path ) {
return path . endsWith ( '-test.js' ) ;
}
module . exports = {
declarationKeyword ( { pathToImportedModule } ) {
if ( isTestFile ( pathToImportedModule ) ) {
return 'const' ;
}
return 'import' ;
} ,
} ;
Hier ist ein ausführlicheres Beispiel, das sowohl pathToImportedModule
als auch pathToCurrentFile
berücksichtigt:
module . exports = {
useRelativePaths ( { pathToImportedModule , pathToCurrentFile } ) {
if ( pathToCurrentFile . endsWith ( '-mock.js' ) ) {
return false ;
}
if ( pathToImportedModule . endsWith ( '-test.js' ) ) {
return false ;
}
return true ;
} ,
} ;
Um Funktionen nutzen zu können, müssen Sie die JavaScript-Konfigurationsdatei ( .importjs.js
) verwenden.
ImportJS verfügt über ein praktisches Befehlszeilentool, mit dem Sie den Import außerhalb eines Editors durchführen können. Unter der Haube nutzen die meisten Editor-Integrationen dies.
⨠ importjs --help
Usage: importjs [options] [command]
Commands:
word [options] < word > < pathToFile >
search [options] < word > < pathToFile >
fix [options] < pathToFile >
rewrite [options] < pathToFile >
add [options] < imports > < pathToFile >
goto < word > < pathToFile >
start [options] start a daemon
cachepath show path to cache file
logpath show path to log file
Options:
-h, --help output usage information
-V, --version output the version number
Examples:
$ importjs word someModule path/to/file.js
$ importjs search someModule * path/to/file.js
$ importjs fix path/to/file.js
$ importjs rewrite --overwrite path/to/file.js
$ importjs add ' { "foo": "path/to/foo", "bar": "path/to/bar" } ' path/to/file.js
$ importjs goto someModule path/to/file.js
$ importjs cachepath
$ importjs logpath
$ importjs start --parent-pid=12345
Wenn Sie die Art und Weise ändern möchten, wie Importe in einem vorhandenen Projekt erstellt werden, können Sie das Befehlszeilentool in Kombination mit find
verwenden, um eine Reihe von Dateien stapelweise zu aktualisieren. Z.B
find ./app -name " **.js* " -exec importjs rewrite --overwrite {} ;
Da das Flag --overwrite
ImportJS destruktiv macht (Dateien werden überschrieben), empfiehlt es sich, noch einmal zu überprüfen, ob der Befehl find
“ die richtigen Dateien zurückgibt, bevor Sie den Teil -exec
hinzufügen.
ImportJS sucht nach der Datei package.json
im nächstgelegenen Vorgängerverzeichnis der Datei, die Sie bearbeiten, um zu importierende Knotenmodule zu finden. Manchmal werden jedoch Abhängigkeiten aus einem Verzeichnis weiter oben in der Kette abgerufen. Ihre Verzeichnisstruktur könnte beispielsweise so aussehen:
.
|-- package.json
|-- components
| |-- button.js
| |-- icon.js
|-- node_modules
| |-- react
|-- subpackage
| |-- package.json
| |-- components
| |-- bulletin.js
Wenn Sie ImportJS für subpackage/components/bulletin.js
verwenden würden, das React importiert, wüsste ImportJS nicht, dass react
eine gültige Abhängigkeit ist.
Um ImportJS anzuweisen, ein Verzeichnis zu überspringen und weiter nach oben zu suchen, um das Stammpaketverzeichnis zu finden, geben Sie "importjs": { "isRoot": false }
in der package.json
des zu ignorierenden Verzeichnisses an. In diesem Fall möchten Sie etwa Folgendes:
{
"name" : " subpackage " ,
...
"importjs" : {
"isRoot" : false
}
}
Hinweis : Dieser Abschnitt richtet sich hauptsächlich an Entwickler von Editor-Plugins. Wenn Sie eines der Standard-Editor-Plugins verwenden, verwenden Sie höchstwahrscheinlich bereits den Daemon unter der Haube.
Sie können ImportJS in einem Hintergrundprozess ausführen und über stdin
und stdout
mit ihm kommunizieren. Dadurch wird der Import beschleunigt, da wir nicht bei jedem Aufruf eine Knotenumgebung hochfahren.
Der Daemon wird durch Ausführen von importjs
gestartet. Es akzeptiert Befehle, die über stdin
gesendet werden. Jeder Befehl ist eine (einzeilige) JSON-Zeichenfolge, die mit einer neuen Zeile endet. Die Befehlsstruktur ist grundsätzlich dieselbe wie beim Befehlszeilentool, jedoch in JSON verpackt und nicht in der Befehlszeile ausgedrückt. Hier ein paar Beispiele:
Führen Sie fix imports
:
{
"command" : " fix " ,
"fileContent" : " const foo = bar(); n " ,
"pathToFile" : " foo.js "
}
Importieren Sie ein einzelnes Wort:
{
"command" : " word " ,
"commandArg" : " bar " ,
"fileContent" : " const foo = bar(); n " ,
"pathToFile" : " foo.js "
}
Gehe zu:
{
"command" : " goto " ,
"commandArg" : " bar " ,
"fileContent" : " const foo = bar(); n " ,
"pathToFile" : " foo.js "
}
Die Ergebnisse werden im JSON-Format auf stdout
gedruckt. Die Antwort sieht genauso aus wie die, die das Befehlszeilentool erzeugt. Wenn ein Fehler auftritt, wird dieser auch als JSON (ein Objekt mit einem error
) in stdout
angezeigt.
Beim Start gibt der Daemon einen Pfad zu einer Protokolldatei aus. Wenn Sie herausfinden möchten, was sich hinter den Kulissen abspielt, können Sie diese Datei einsehen. Wenn Sie keinen Zugriff auf das Konsolenprotokoll des Daemons haben, finden Sie die Protokolldatei in os.tmpdir() + '/importjs.log
(die in etwas wie var/folders/1l/_t6tm7195nd53936tsvh2pcr0000gn/T/importjs.log
aufgelöst wird. var/folders/1l/_t6tm7195nd53936tsvh2pcr0000gn/T/importjs.log
auf einem Mac).
Wenn Sie über eine große Anwendung verfügen, kann das Durchsuchen des Dateisystems zum Auffinden von Modulen langsam sein. Aus diesem Grund verfügt ImportJS über eine integrierte Integration mit Watchman, einem schnellen und robusten Dateiüberwachungsdienst, der von Facebook entwickelt wurde. Um eine Leistungssteigerung zu erzielen, müssen Sie Watchman lediglich lokal installieren und sicherstellen, dass Sie ein aktuelles Editor-Plugin verwenden (Watchman wird nur verwendet, wenn ImportJS als Daemon ausgeführt wird).
Tipps zum lokalen Ausführen, Testen und Entwickeln von ImportJS finden Sie im Dokument CONTRIBUTING.md.
Viel Spaß beim Hacken!