Code Monkey home page Code Monkey logo

Comments (20)

param-fk avatar param-fk commented on August 11, 2024 3

Never mind, it is working now.

from babel-plugin-transform-react-pug.

pruge avatar pruge commented on August 11, 2024 2

I publish a library to solve this problem.
webpack-preprocessor-pug-tsx

from babel-plugin-transform-react-pug.

ikeq avatar ikeq commented on August 11, 2024 1

This is the problem I have encountered:

import { Header } from './components'

console.log(Header) // produce a side effect

export function Main(props) {
  return pug `
    Header
  `
}

It works just fine, but when I remove console.log(Header),
import { Header } from './components' is also be removed by Typescript.

Because the source code is through Typescript first and Typescript does not handle pug, the Header import is marked as an unused import.

Does anyone know how to solve this? Thx.

from babel-plugin-transform-react-pug.

gotexis avatar gotexis commented on August 11, 2024 1

trying to get expo / react-native / typescript / pug to work

having a hard time...

it is saying React isnt defined for me

from babel-plugin-transform-react-pug.

super918180 avatar super918180 commented on August 11, 2024

Does this plug support TSX?

from babel-plugin-transform-react-pug.

ForbesLindesay avatar ForbesLindesay commented on August 11, 2024

You could add a definition file that declares declare const pug: any;, which would fix the typescript compiler, you need to make sure the "target" config of typescript includes template literals too.

from babel-plugin-transform-react-pug.

param-fk avatar param-fk commented on August 11, 2024

Need help here. @ForbesLindesay Can you please give a snippet or example?

from babel-plugin-transform-react-pug.

ForbesLindesay avatar ForbesLindesay commented on August 11, 2024

Just add declare const pug: any; to the top of any file that uses pug.

from babel-plugin-transform-react-pug.

bk1012 avatar bk1012 commented on August 11, 2024

@ForbesLindesay
sorry, I get another problem like this:

./src/pages/A.tsx
Module parse failed: Unexpected token (34:19)
You may need an appropriate loader to handle this file type.
|         key: 'render',
|         value: function render() {
|             return <div>12234</div>;
|         }
|     }]);

file A.tsx

import * as React from 'react';

class A extends React.PureComponent {
  render() {
    return pug`
      div 12234
    `;
  }
}

export default A;

In my project
tsconfig.json target is es2015
.babelrc plugins is [ "transform-react-pug", "transform-react-jsx", "transform-runtime", "syntax-dynamic-import" ]

"transform-react-jsx" seems could not transform tsx.....
I tried to use google to solve the problem, but could not find the answer. Could you tell me how to deal with this?

from babel-plugin-transform-react-pug.

ForbesLindesay avatar ForbesLindesay commented on August 11, 2024

I don't know what could be causing that. I've never seen it be an issue before. It looks more like a problem with babel, than typescript.

from babel-plugin-transform-react-pug.

param-fk avatar param-fk commented on August 11, 2024

@ForbesLindesay Just adding declare const pug: any; on top of the file would surpass the tslint error. But at the time of compilation as in webpack below

{
            test: /\.tsx?$/,
            use: [
                {
                    loader: 'babel-loader',
                    options: babelOptions
                },
                {
                    loader: 'awesome-typescript-loader'
                }
            ],
            exclude: /node_modules/,
        },

It'll run the typescript loader first and when it doesn't find pug variable defined it throws an error at compile time only. That's the whole problem.

from babel-plugin-transform-react-pug.

mostrecent avatar mostrecent commented on August 11, 2024

@param-fk and to anyone who got TS with this working. I couldn't get them to work and I tried all options:

  1. ts-loader first, then babel-loader with the pug and jsx stuff
  2. only the babel-loader with typescript plugin/preset (which also MS recommends)

With any option I end up with an error stating that the React components in the pug template strings are not recognized, e.g. Uncaught ReferenceError: BrowserRouter is not defined. My Webpack config with option 2 is:

module.exports = {
  entry: './src/index.ts',
  resolve: {
    extensions: ['.ts', '.js', '.jsx', '.tsx']
  },
  module: {
    rules: [
      {
        test: /\.(ts|js)x?$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader',
            options: {
              plugins: [
                '@babel/plugin-transform-typescript',
                'transform-react-pug',
                'transform-react-jsx',
              ]
            }
          },
        ]
      },
    ]
  }
}

from babel-plugin-transform-react-pug.

imadbz avatar imadbz commented on August 11, 2024

@param-fk how you made it work! I am still stuck on the same error for the same reason

from babel-plugin-transform-react-pug.

suniv2010 avatar suniv2010 commented on August 11, 2024

even i am stuck with same error please explain how you did this?

from babel-plugin-transform-react-pug.

suniv2010 avatar suniv2010 commented on August 11, 2024

@param-fk please explain how you did this?

from babel-plugin-transform-react-pug.

ForbesLindesay avatar ForbesLindesay commented on August 11, 2024

My suggestion would be to use babel to compile your TypeScript via https://babeljs.io/docs/en/babel-preset-typescript and use the typescript CLI just for type checking (by passing --noEmit)

from babel-plugin-transform-react-pug.

stevefan1999-personal avatar stevefan1999-personal commented on August 11, 2024

This is the problem I have encountered:

import { Header } from './components'

console.log(Header) // produce a side effect

export function Main(props) {
  return pug `
    Header
  `
}

It works just fine, but when I remove console.log(Header),
import { Header } from './components' is also be removed by Typescript.

Because the source code is through Typescript first and Typescript does not handle pug, the Header import is marked as an unused import.

Does anyone know how to solve this? Thx.

Blocked by microsoft/TypeScript#9191

from babel-plugin-transform-react-pug.

Gooseware avatar Gooseware commented on August 11, 2024

So would this mean that pug needs to be transformed before the typescript ?

from babel-plugin-transform-react-pug.

stevefan1999-personal avatar stevefan1999-personal commented on August 11, 2024

So would this mean that pug needs to be transformed before the typescript ?

Yes, using a custom transformer so that it ends up being a valid JSX node and TS will be able to recognize this block of Pug code and the components as valid references, so that no elision is gonna happen

from babel-plugin-transform-react-pug.

skotchpine avatar skotchpine commented on August 11, 2024

We should include wisdom from this thread in the README

from babel-plugin-transform-react-pug.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.