Javascript 在Webstorm中自动完成我的自定义npm模块(ES6/Babel)

Javascript 在Webstorm中自动完成我的自定义npm模块(ES6/Babel),javascript,intellij-idea,npm,ecmascript-6,babeljs,Javascript,Intellij Idea,Npm,Ecmascript 6,Babeljs,当我使用软件包时,我在Webstorm中得到了很好的自动完成(ctrl+space): 我认为这可能与包中包含index.es.js文件有关: import _AppBar from './AppBar'; export { _AppBar as AppBar }; import _AutoComplete from './AutoComplete'; export { _AutoComplete as AutoComplete }; import _Avatar from './Avatar

当我使用软件包时,我在Webstorm中得到了很好的自动完成(ctrl+space):

我认为这可能与包中包含index.es.js文件有关:

import _AppBar from './AppBar';
export { _AppBar as AppBar };
import _AutoComplete from './AutoComplete';
export { _AutoComplete as AutoComplete };
import _Avatar from './Avatar';
export { _Avatar as Avatar };
import _Badge from './Badge';
export { _Badge as Badge };
import _BottomNavigation from './BottomNavigation';
...
因此,我在自定义npm模块中生成了自己的index.es.js,并将其放在transpiled index.js旁边:

import {ActionTypes as _ActionTypesElements} from './reducers/elements/elements';
export { _ActionTypesElements as ActionTypes };

import {ActionTypes as _ActionTypesAppState} from './reducers/appState/appState';
export { _ActionTypesAppState as ActionTypesAppState };

import _appStateActions from './reducers/appState/appState_actions';
export { _appStateActions as appStateActions };
...
但我没有自动完成:

知道为什么吗?

找到了答案:

必须在npm模块的package.json中添加一个jsnext:main字段:

package.json:

 ...
 "module": "./index.js",
 "jsnext:main": "./index.es.js",
 ...

Webstorm识别包的内部导出。

在Webstorm 2019.3中,我遵循以下步骤强制代码完成(包括自动导入)以用于自定义、自发布的NPM包:

  • 确保项目本身在项目的根目录下有一个package.json文件,并且package.json在“dependency”对象中包含所需的包。例如:
  • {
    “名称”:“testproject”,
    “版本”:“1.0.0”,
    “依赖项”:{
    “@yourname/yourpackage”:“最新”
    }
    }
    
  • 在WebStorm中,选择文件>使缓存无效/重新启动

  • 要启用包内容的自动导入,请确保使用包的JavaScript文件至少有一条export语句。例如,在以下代码中,存在导出,因此代码完成自动导入包函数isNil():

  • 导出函数init(){
    伊斯尼尔
    }
    
    相比之下,以下代码不包含export语句,因此isNil()不会自动导入:

    function init () {
      isNil
    }
    

    对我来说,上述三个步骤都是代码完成所必需的,以便在WebStorm中为我自己的NPM包工作。

    您是否安装了任何材料插件?在
    文件->设置->插件中
    ?您是否安装了npm模块,如:
    npm文件编辑器安装
    ?@Edwin我找到了答案,显然我必须在package.json中添加一个名为jsnext:main的字段。