Skip to content

Commit

Permalink
fix: handle .cjs & .mjs extensions (#1181)
Browse files Browse the repository at this point in the history
* fix: handle .cjs & .mjs extensions

* fix: skip processing of literals on exports
  • Loading branch information
layershifter committed Jan 13, 2023
1 parent fc67fa9 commit 2d3a741
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 24 deletions.
6 changes: 6 additions & 0 deletions .changeset/wicked-poets-begin.md
@@ -0,0 +1,6 @@
---
"@linaria/babel-preset": patch
"@linaria/testkit": patch
---

fix: handle .cjs & .mjs extensions
Expand Up @@ -30,7 +30,7 @@ export default function loadLinariaOptions(
const options = {
displayName: false,
evaluate: true,
extensions: ['.json', '.js', '.jsx', '.ts', '.tsx'],
extensions: ['.cjs', '.json', '.js', '.jsx', '.mjs', '.ts', '.tsx'],
rules: rules ?? [
{
action: require.resolve('@linaria/shaker'),
Expand Down
1 change: 1 addition & 0 deletions packages/babel/src/utils/processTemplateExpression.ts
Expand Up @@ -17,6 +17,7 @@ const processTemplateExpression = (
>,
emit: (processor: BaseProcessor) => void
) => {
if (p.parentPath.isExportSpecifier()) return;
if (processed.has(p.node)) return;

const tagProcessor = getTagProcessor(p, fileContext, options);
Expand Down
1 change: 1 addition & 0 deletions packages/testkit/src/__fixtures__/sample-script.cjs
@@ -0,0 +1 @@
module.exports = 42;
40 changes: 17 additions & 23 deletions packages/testkit/src/module.test.ts
@@ -1,38 +1,20 @@
import path from 'path';

import * as babel from '@babel/core';
import dedent from 'dedent';

import { Module, TransformCacheCollection } from '@linaria/babel-preset';
import type { Evaluator, StrictOptions } from '@linaria/utils';
import type { StrictOptions } from '@linaria/utils';

beforeEach(() => Module.invalidate());

const evaluator: Evaluator = (filename, options, text) => {
const { code } = babel.transformSync(text, {
filename,
presets: ['@babel/preset-env'],
})!;
return [code!, null];
};

function getFileName() {
return path.resolve(__dirname, './__fixtures__/test.js');
}

const options: StrictOptions = {
displayName: false,
evaluate: true,
extensions: ['.js', '.jsx', '.ts', '.tsx'],
rules: [
{
action: evaluator,
},
{
test: /\/node_modules\//,
action: 'ignore',
},
],
extensions: ['.cjs', '.js', '.jsx', '.ts', '.tsx'],
rules: [],
babelOptions: {},
};

Expand All @@ -49,7 +31,7 @@ it('creates module for JS files', () => {
expect(mod.filename).toBe(filename);
});

it('requires JS files', () => {
it('requires .js files', () => {
const mod = new Module(getFileName(), options);

mod.evaluate(dedent`
Expand All @@ -61,7 +43,19 @@ it('requires JS files', () => {
expect(mod.exports).toBe('The answer is 42');
});

it('requires JSON files', () => {
it('requires .cjs files', () => {
const mod = new Module(getFileName(), options);

mod.evaluate(dedent`
const answer = require('./sample-script.cjs');
module.exports = 'The answer is ' + answer;
`);

expect(mod.exports).toBe('The answer is 42');
});

it('requires .json files', () => {
const mod = new Module(getFileName(), options);

mod.evaluate(dedent`
Expand Down

0 comments on commit 2d3a741

Please sign in to comment.