Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
Compile .jsx files instead of .js using babel

I'm starting to learn ReactJs, and I was trying to build an environment from scratch using this "builder".

Everything works pretty well, but I'd like to work with .jsx files instead of .js (the text editor screws up otherwise, and ir feels better using a different extension for not-compiled scripts)

However, I didn't manage to compile such .jsx files, it only works with .js files.

This is the configuration files for .babelrc:

{
    "presets":["es2015","react"]
}

And my webpack.config.js:

var path = require('path');

var config = {
    context: path.join(__dirname,'src'),
    entry:[
        './main.js'
    ],
    output:{
        path    :path.join(__dirname,'www'),
        filename:'bundle.js'
    },
    module:{
        loaders:[
            {
                test: /\.js$/,
                exclude:/node_modules/,
                loaders:['babel']
            }
        ],
    },
    resolveLoader:{
        root: [
            path.join(__dirname,'node_modules')
        ]
    },
    resolve:{
        root:[
            path.join(__dirname,'node_modules')
        ]
    }
};

module.exports = config;

I tried simply changing the extensions in the webpack config file from js to jsx, but to no avail. Any ideas?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Just replace this line:

test: /\.js$/,

with:

test: /\.jsx$/,

It will run babel loader on the .jsx files, instead of .js files.

If you want to transpile both .js and .jsx, you can set it to /\.jsx?$/, where ? in regex indicates to match 0 or 1 occurrences of the preceding character: test positive for both .js and .jsx.

.test property indicates a condition that must be met to run the loader specified in the loader key. You can read more about module.loader options here.

Also, when importing modules, you should add the .jsx extension, like this:

import Counter from './Counter.jsx';

Or set webpack's resolve.extensions config to add .jsx extension (by default, it looks only for .js files). Like this:

resolve: {
   /* ... */
   extensions: ['', '.js', '.jsx']
 }

This way, you can import your files without the extension:

import Counter from './Counter';
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!