Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow cjs config files on type module projects #8253

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/utils/src/config.js
Expand Up @@ -71,7 +71,7 @@ export async function loadConfig(

try {
let extname = path.extname(configFile).slice(1);
if (extname === 'js') {
if (['js', 'cjs'].includes(extname)) {
mrdaniellewis marked this conversation as resolved.
Show resolved Hide resolved
let output = {
// $FlowFixMe
config: clone(require(configFile)),
Expand Down
48 changes: 48 additions & 0 deletions packages/core/utils/test/config.test.js
Expand Up @@ -47,4 +47,52 @@ describe('loadConfig', () => {
{},
);
});

it('should load with js', async () => {
assert.deepEqual(
(
await loadConfig(
fs,
path.join(__dirname, './input/config/config.js'),
['config.js'],
path.join(__dirname, './input/config/'),
)
)?.config,
{
hoge: 'fuga',
},
);
});

it('should load with cjs', async () => {
assert.deepEqual(
(
await loadConfig(
fs,
path.join(__dirname, './input/config/config.cjs'),
['config.cjs'],
path.join(__dirname, './input/config/'),
)
)?.config,
{
hoge: 'fuga',
},
);
});

it('should load without an extension as json', async () => {
assert.deepEqual(
(
await loadConfig(
fs,
path.join(__dirname, './input/config/.testrc'),
['.testrc'],
path.join(__dirname, './input/config/'),
)
)?.config,
{
hoge: 'fuga',
},
);
});
});
3 changes: 3 additions & 0 deletions packages/core/utils/test/input/config/.testrc
@@ -0,0 +1,3 @@
{
"hoge": "fuga"
}
3 changes: 3 additions & 0 deletions packages/core/utils/test/input/config/config.cjs
@@ -0,0 +1,3 @@
module.exports = {
hoge: 'fuga',
};
3 changes: 3 additions & 0 deletions packages/core/utils/test/input/config/config.js
@@ -0,0 +1,3 @@
module.exports = {
hoge: 'fuga',
};
7 changes: 6 additions & 1 deletion packages/optimizers/css/src/CSSOptimizer.js
Expand Up @@ -16,7 +16,12 @@ import {md, generateJSONCodeHighlights} from '@parcel/diagnostic';
export default (new Optimizer({
async loadConfig({config, logger, options}) {
const configFile = await config.getConfig(
['.cssnanorc', 'cssnano.config.json', 'cssnano.config.js'],
[
'.cssnanorc',
'cssnano.config.json',
'cssnano.config.js',
'cssnano.config.cjs',
],
{
packageKey: 'cssnano',
},
Expand Down
7 changes: 6 additions & 1 deletion packages/optimizers/cssnano/src/CSSNanoOptimizer.js
Expand Up @@ -10,7 +10,12 @@ import path from 'path';
export default (new Optimizer({
async loadConfig({config}) {
const configFile = await config.getConfig(
['.cssnanorc', 'cssnano.config.json', 'cssnano.config.js'],
[
'.cssnanorc',
'cssnano.config.json',
'cssnano.config.js',
'cssnano.config.cjs',
],
{
packageKey: 'cssnano',
},
Expand Down
2 changes: 2 additions & 0 deletions packages/optimizers/htmlnano/src/HTMLNanoOptimizer.js
Expand Up @@ -15,7 +15,9 @@ export default (new Optimizer({
'.htmlnanorc',
'.htmlnanorc.json',
'.htmlnanorc.js',
'.htmlnanorc.cjs',
'htmlnano.config.js',
'htmlnano.config.cjs',
],
{
packageKey: 'htmlnano',
Expand Down
1 change: 1 addition & 0 deletions packages/optimizers/svgo/src/SVGOOptimizer.js
Expand Up @@ -11,6 +11,7 @@ export default (new Optimizer({
async loadConfig({config}) {
let configFile = await config.getConfig([
'svgo.config.js',
'svgo.config.cjs',
'svgo.config.json',
]);

Expand Down
2 changes: 1 addition & 1 deletion packages/optimizers/swc/src/SwcOptimizer.js
Expand Up @@ -12,7 +12,7 @@ export default (new Optimizer({
async loadConfig({config, options}) {
let userConfig = await config.getConfigFrom(
path.join(options.projectRoot, 'index'),
['.terserrc', '.terserrc.js'],
['.terserrc', '.terserrc.js', '.terserrc.cjs'],
);

if (userConfig) {
Expand Down
2 changes: 1 addition & 1 deletion packages/optimizers/terser/src/TerserOptimizer.js
Expand Up @@ -13,7 +13,7 @@ export default (new Optimizer({
async loadConfig({config, options}) {
let userConfig = await config.getConfigFrom(
path.join(options.projectRoot, 'index'),
['.terserrc', '.terserrc.js'],
['.terserrc', '.terserrc.js', '.terserrc.cjs'],
);

if (userConfig) {
Expand Down
8 changes: 7 additions & 1 deletion packages/packagers/html/src/HTMLPackager.js
Expand Up @@ -29,7 +29,13 @@ const metadataContent = new Set([
export default (new Packager({
async loadConfig({config}) {
let posthtmlConfig = await config.getConfig(
['.posthtmlrc', '.posthtmlrc.js', 'posthtml.config.js'],
[
'.posthtmlrc',
'.posthtmlrc.js',
'.posthtmlrc.cjs',
'posthtml.config.js',
'posthtml.config.cjs',
],
{
packageKey: 'posthtml',
},
Expand Down
9 changes: 6 additions & 3 deletions packages/transformers/less/src/loadConfig.js
Expand Up @@ -12,9 +12,12 @@ export async function load({
}: {|
config: Config,
|}): Promise<ConfigResult> {
let configFile = await config.getConfig(['.lessrc', '.lessrc.js'], {
packageKey: 'less',
});
let configFile = await config.getConfig(
['.lessrc', '.lessrc.js', '.lessrc.cjs'],
{
packageKey: 'less',
},
);

let configContents = {};
if (configFile != null) {
Expand Down
9 changes: 8 additions & 1 deletion packages/transformers/postcss/src/loadConfig.js
Expand Up @@ -160,7 +160,14 @@ export async function load({
}

let configFile: any = await config.getConfig(
['.postcssrc', '.postcssrc.json', '.postcssrc.js', 'postcss.config.js'],
[
'.postcssrc',
'.postcssrc.json',
'.postcssrc.js',
'.postcssrc.cjs',
'postcss.config.js',
'postcss.config.cjs',
],
{packageKey: 'postcss'},
);

Expand Down
8 changes: 7 additions & 1 deletion packages/transformers/posthtml/src/PostHTMLTransformer.js
Expand Up @@ -18,7 +18,13 @@ export default (new Transformer({
}

let configFile = await config.getConfig(
['.posthtmlrc', '.posthtmlrc.js', 'posthtml.config.js'],
[
'.posthtmlrc',
'.posthtmlrc.js',
'.posthtmlrc.cjs',
'posthtml.config.js',
'posthtml.config.cjs',
],
{
packageKey: 'posthtml',
},
Expand Down
2 changes: 2 additions & 0 deletions packages/transformers/pug/src/PugTransformer.js
Expand Up @@ -9,7 +9,9 @@ export default (new Transformer({
let configFile = await config.getConfig([
'.pugrc',
'.pugrc.js',
'.pugrc.cjs',
'pug.config.js',
'pug.config.cjs',
]);

if (configFile) {
Expand Down
2 changes: 1 addition & 1 deletion packages/transformers/sass/src/SassTransformer.js
Expand Up @@ -12,7 +12,7 @@ const NODE_MODULE_ALIAS_RE = /^~[^/\\]/;
export default (new Transformer({
async loadConfig({config, options}) {
let configFile = await config.getConfig(
['.sassrc', '.sassrc.json', '.sassrc.js'],
['.sassrc', '.sassrc.json', '.sassrc.js', '.sassrc.cjs'],
{
packageKey: 'sass',
},
Expand Down
9 changes: 6 additions & 3 deletions packages/transformers/stylus/src/StylusTransformer.js
Expand Up @@ -15,9 +15,12 @@ const URL_RE = /^(?:url\s*\(\s*)?['"]?(?:[#/]|(?:https?:)?\/\/)/i;

export default (new Transformer({
async loadConfig({config}) {
let configFile = await config.getConfig(['.stylusrc', '.stylusrc.js'], {
packageKey: 'stylus',
});
let configFile = await config.getConfig(
['.stylusrc', '.stylusrc.js', '.stylusrc.cjs'],
{
packageKey: 'stylus',
},
);

if (configFile) {
let isJavascript = path.extname(configFile.filePath) === '.js';
Expand Down
9 changes: 8 additions & 1 deletion packages/transformers/vue/src/VueTransformer.js
Expand Up @@ -23,7 +23,14 @@ const MODULE_BY_NAME_RE = /\.module\./;
export default (new Transformer({
async loadConfig({config}) {
let conf = await config.getConfig(
['.vuerc', '.vuerc.json', '.vuerc.js', 'vue.config.js'],
[
'.vuerc',
'.vuerc.json',
'.vuerc.js',
'.vuerc.cjs',
'vue.config.js',
'vue.config.cjs',
],
{packageKey: 'vue'},
);
let contents = {};
Expand Down