Skip to content

Commit

Permalink
Revert "feat(gatsby-plugin-typescript): Supports linting (#187… (#22308)
Browse files Browse the repository at this point in the history
* Revert "fix(gatsby-plugin-typescript): Broader webpack support (#22003)"

This reverts commit 4b93826.

* Revert "feat(gatsby-plugin-typescript): Supports linting (#18721)"

This reverts commit d28a0bd.
  • Loading branch information
wardpeet committed Mar 16, 2020
1 parent 99c739c commit 8c581c7
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 219 deletions.
6 changes: 0 additions & 6 deletions packages/gatsby-plugin-typescript/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,3 @@ Visual Studio Code is very good in this regard.

In addition, you can see the instructions in [TypeScript-Babel-Starter](https://github.com/Microsoft/TypeScript-Babel-Starter)
for setting up a `type-check` task.

## ESLint

This plugin supports linting TSX with [typescript-eslint](https://typescript-eslint.io) using [Gatsby's default ESLint config](https://www.gatsbyjs.org/docs/eslint/). To enable linting TSX, install `typescript`.

`npm install typescript`
8 changes: 1 addition & 7 deletions packages/gatsby-plugin-typescript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,7 @@
"license": "MIT",
"main": "index.js",
"peerDependencies": {
"gatsby": "^2.0.0",
"typescript": "^3.2.1"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
"gatsby": "^2.0.0"
},
"repository": {
"type": "git",
Expand Down
165 changes: 2 additions & 163 deletions packages/gatsby-plugin-typescript/src/__tests__/gatsby-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,65 +49,7 @@ describe(`gatsby-plugin-typescript`, () => {
const actions = { setWebpackConfig: jest.fn() }
const jsLoader = {}
const loaders = { js: jest.fn(() => jsLoader) }
const stage = `develop`
const eslintLoader = { loader: `eslint-loader` }
const webpackConfig = {
module: {
rules: [
{
enforce: `pre`,
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: [eslintLoader],
},
],
},
}
const getConfig = jest.fn(() => webpackConfig)
onCreateWebpackConfig({ actions, getConfig, loaders, stage })
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
{
test: /\.tsx?$/,
use: jsLoader,
},
],
},
})
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
{
enforce: `pre`,
test: /\.tsx?$/,
exclude: /(node_modules|bower_components)/,
use: [eslintLoader],
},
],
},
})
})

it(`sets the correct webpack config with rule.loader shortcut`, () => {
const actions = { setWebpackConfig: jest.fn() }
const jsLoader = {}
const loaders = { js: jest.fn(() => jsLoader) }
const stage = `develop`
const webpackConfig = {
module: {
rules: [
{
enforce: `pre`,
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: `eslint-loader`,
},
],
},
}
const getConfig = jest.fn(() => webpackConfig)
onCreateWebpackConfig({ actions, getConfig, loaders, stage })
onCreateWebpackConfig({ actions, loaders })
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
Expand All @@ -118,116 +60,13 @@ describe(`gatsby-plugin-typescript`, () => {
],
},
})
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
{
enforce: `pre`,
test: /\.tsx?$/,
exclude: /(node_modules|bower_components)/,
loader: `eslint-loader`,
},
],
},
})
})

it(`does not set the webpack config if there isn't a js loader`, () => {
const actions = { setWebpackConfig: jest.fn() }
const loaders = { js: jest.fn() }
const stage = `develop`
const getConfig = jest.fn()
onCreateWebpackConfig({ actions, getConfig, loaders, stage })
onCreateWebpackConfig({ actions, loaders })
expect(actions.setWebpackConfig).not.toHaveBeenCalled()
})

it(`does not set the typescript-eslint webpack config if the built-in eslint-loader isn't set`, () => {
const actions = { setWebpackConfig: jest.fn() }
const jsLoader = {}
const loaders = {
js: jest.fn(() => jsLoader),
}
const stage = `develop`
const webpackConfig = {
module: {
rules: [
{
enforce: `pre`,
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: [],
},
],
},
}
const getConfig = jest.fn(() => webpackConfig)
onCreateWebpackConfig({ actions, getConfig, loaders, stage })
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
{
test: /\.tsx?$/,
use: jsLoader,
},
],
},
})
expect(actions.setWebpackConfig).not.toHaveBeenCalledWith({
module: {
rules: [
{
enforce: `pre`,
test: /\.tsx?$/,
exclude: /(node_modules|bower_components)/,
use: [],
},
],
},
})
})

it(`set the typescript-eslint webpack config only if in develop stage`, () => {
const actions = { setWebpackConfig: jest.fn() }
const jsLoader = {}
const loaders = { js: jest.fn(() => jsLoader) }
const stage = `build-html`
const eslintLoader = { loader: `eslint-loader` }
const webpackConfig = {
module: {
rules: [
{
enforce: `pre`,
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: [eslintLoader],
},
],
},
}
const getConfig = jest.fn(() => webpackConfig)
onCreateWebpackConfig({ actions, getConfig, loaders, stage })
expect(actions.setWebpackConfig).toHaveBeenCalledWith({
module: {
rules: [
{
test: /\.tsx?$/,
use: jsLoader,
},
],
},
})
expect(actions.setWebpackConfig).not.toHaveBeenCalledWith({
module: {
rules: [
{
enforce: `pre`,
test: /\.tsx?$/,
exclude: /(node_modules|bower_components)/,
use: [eslintLoader],
},
],
},
})
})
})
})
44 changes: 1 addition & 43 deletions packages/gatsby-plugin-typescript/src/gatsby-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,7 @@ function onCreateBabelConfig({ actions }, options) {
})
}

function onCreateWebpackConfig({
actions,
getConfig,
loaders,
stage,
reporter,
}) {
function onCreateWebpackConfig({ actions, loaders }) {
const jsLoader = loaders.js()

if (!jsLoader) {
Expand All @@ -39,42 +33,6 @@ function onCreateWebpackConfig({
],
},
})

if (stage === `develop`) {
let isTypescriptDepAvailable
try {
isTypescriptDepAvailable = require.resolve(`typescript`)
} catch (e) {
reporter.warn(
`"typescript" is not installed. Builtin ESLint won't be working on typescript files.`
)
}

if (isTypescriptDepAvailable) {
const builtInEslintRule = getConfig().module.rules.find(rule => {
if (rule.enforce === `pre`) {
if (rule.use) {
return rule.use.some(use => /eslint-loader/.test(use.loader))
} else {
return /eslint-loader/.test(rule.loader)
}
}
return false
})

if (builtInEslintRule) {
const typescriptEslintRule = {
...builtInEslintRule,
test: /\.tsx?$/,
}
actions.setWebpackConfig({
module: {
rules: [typescriptEslintRule],
},
})
}
}
}
}

exports.resolvableExtensions = resolvableExtensions
Expand Down

0 comments on commit 8c581c7

Please sign in to comment.