我想搜索npm包的导入声明,而不是本地进口,
我想搜索这些类型的字符串:
import axios from 'axios';
import ApolloLinkTimeout from 'apollo-link-timeout';
import { RestLink } from 'apollo-link-rest';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { onError } from 'apollo-link-error';但不是这些:
import { getAllAccounts } from '../../store/actions/actions';
import { CREATE_ACCOUNT_QUERY } from '../queries/AccountsQuery';
import UserContext from '../UserContext';这是否可能在javascript中使用Regex或任何其他方式,我已经尝试过import {[^}]*}.*'foo-bar',但这并不像预期的那样工作。
编辑:根据评论,
^import\s+(?:\{\s*\w+\s*\}|\w+)\s+from\s+['"]([^\/]+?)['"];?$正在取得更好的效果,但对下列情况则不然:
import React, { useEffect, useState } from 'react';
import { Col, Modal, ModalHeader, Row } from 'reactstrap';
import { useLazyQuery } from '@apollo/react-hooks';发布于 2022-06-29 11:48:09
^import\s.*?\sfrom\s+['"](@[\w\/\-]+|[^.]+?)(?:\/.*?)?['"];?$解释
^开头import\s.*?\s匹配字符串,该字符串以import关键字开头,然后模块默认,或在空格字符后导出到fromfrom\s+匹配from关键字和一个或多个空格['"]匹配' (单引号)或" (双引号)字符(捕获组@[\w\/\-]+包名应该以@开头,可以包含单词字符(字母、数字、下划线)、/和-字符|或[^.]+?包名应包含除. (点)以外的任何字符)紧群(?:\/.*?)?匹配包子路径(可以存在也可以不存在)['"];?匹配关闭引号和可选的;在末尾$末端请参阅regex 演示并请注意最后一行,它只捕获包名。
https://stackoverflow.com/questions/72798242
复制相似问题