在 Gatsby / Typescript 项目中设置导入别名
Set up import aliases in Gatsby / Typescript project
我尝试在我的 Gatsby 和 Typescript 项目中创建导入别名。我使用 npm 包 eslint-import-resolver-alias.
所以我可以使用:
import Layout from '@components/Layout';
在gatsby-node.js
我有:
const path = require('path');
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
alias: {
@components: path.resolve(__dirname, 'src/components'),
@static: path.resolve(__dirname, 'static'),
},
},
});
};
在 .eslintrc.js
我有:
alias: [['@components', './src/components']]
我有:
"baseUrl": "./src",
"paths": {
"@components": ["/components"]
现在我在 VSCode 中收到此错误:
Unable to resolve path to module
'components/layout'.eslintimport/no-unresolved
您不需要 gatsby-plugin-resolve-src
来允许从 /src
导入。默认情况下,它由 Gatsby 处理。如果正确导出,项目文件夹中的所有内容都可以作为 React 组件导入。
如果你想在你的导入中添加别名,路径的多重相关性以避免类似的事情:
import Subscribe from '../../../../../../../core/modules/newsletter/mixins/Subscribe'
您可以通过添加 setWebpackConfig
API(在您的 gatsby-node.js
:
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, `src`), `node_modules`],
},
});
};
此外,您可以添加:
const path = require("path");
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
alias: {
"@components": path.resolve(__dirname, "src/components"),
"@static": path.resolve(__dirname, "static")
}
}
});
}
第一个片段允许您从 node_modules
和 /components
文件夹中的第二个片段进行动态导入。
要解决 ESlint 导入问题,您需要通过以下方式安装 eslint-import-resolver-alias
插件:
npm i -D eslint-import-resolver-alias
然后在你的.eslint
文件中添加如下配置:
{
"settings": {
"import/resolver": {
"alias": [
["@components", "./src/components"]
]
}
}
}
您可能会发现 this article 有帮助。
我通过在 .eslintrc.js
:
中将 paths: ['./src'],
添加到 import/resolver
使其工作
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
paths: ['./src'],
},
alias: [['components', './src/components']],
},
我尝试在我的 Gatsby 和 Typescript 项目中创建导入别名。我使用 npm 包 eslint-import-resolver-alias.
所以我可以使用:
import Layout from '@components/Layout';
在gatsby-node.js
我有:
const path = require('path');
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
alias: {
@components: path.resolve(__dirname, 'src/components'),
@static: path.resolve(__dirname, 'static'),
},
},
});
};
在 .eslintrc.js
我有:
alias: [['@components', './src/components']]
我有:
"baseUrl": "./src",
"paths": {
"@components": ["/components"]
现在我在 VSCode 中收到此错误:
Unable to resolve path to module 'components/layout'.eslintimport/no-unresolved
您不需要 gatsby-plugin-resolve-src
来允许从 /src
导入。默认情况下,它由 Gatsby 处理。如果正确导出,项目文件夹中的所有内容都可以作为 React 组件导入。
如果你想在你的导入中添加别名,路径的多重相关性以避免类似的事情:
import Subscribe from '../../../../../../../core/modules/newsletter/mixins/Subscribe'
您可以通过添加 setWebpackConfig
API(在您的 gatsby-node.js
:
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
modules: [path.resolve(__dirname, `src`), `node_modules`],
},
});
};
此外,您可以添加:
const path = require("path");
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
resolve: {
alias: {
"@components": path.resolve(__dirname, "src/components"),
"@static": path.resolve(__dirname, "static")
}
}
});
}
第一个片段允许您从 node_modules
和 /components
文件夹中的第二个片段进行动态导入。
要解决 ESlint 导入问题,您需要通过以下方式安装 eslint-import-resolver-alias
插件:
npm i -D eslint-import-resolver-alias
然后在你的.eslint
文件中添加如下配置:
{
"settings": {
"import/resolver": {
"alias": [
["@components", "./src/components"]
]
}
}
}
您可能会发现 this article 有帮助。
我通过在 .eslintrc.js
:
paths: ['./src'],
添加到 import/resolver
使其工作
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
paths: ['./src'],
},
alias: [['components', './src/components']],
},