diff --git a/README.md b/README.md index 8b2ae681..64ca370f 100644 --- a/README.md +++ b/README.md @@ -124,16 +124,16 @@ And run `webpack` via your preferred method. | Name | Type | Default | Description | | :---------------------------------: | :------------------: | :-----------------------------------: | :------------------------------------------- | -| [`exec`](#exec) | `{Boolean}` | `undefined` | Enable PostCSS Parser support in `CSS-in-JS` | +| [`execute`](#execute) | `{Boolean}` | `undefined` | Enable PostCSS Parser support in `CSS-in-JS` | | [`postcssOptions`](#postcssOptions) | `{Object\/Function}` | `defaults values for Postcss.process` | Set `postcss` options and plugins | | [`sourceMap`](#sourcemap) | `{Boolean}` | `compiler.devtool` | Enables/Disables generation of source maps | -### `exec` +### `execute` Type: `Boolean` Default: `undefined` -If you use JS styles without the [`postcss-js`][postcss-js] parser, add the `exec` option. +If you use JS styles the [`postcss-js`](https://github.com/postcss/postcss-js) parser, add the `execute` option. **webpack.config.js** @@ -147,13 +147,12 @@ module.exports = { 'style-loader', { loader: 'css-loader', - options: { importLoaders: 1 }, }, { loader: 'postcss-loader', options: { postcssOptions: { - parser: 'sugarss', + parser: 'postcss-js', }, exec: true, }, @@ -867,6 +866,7 @@ module.exports = { postcssOptions: { parser: 'postcss-js', }, + execute: true, }, }, 'babel-loader', diff --git a/src/index.js b/src/index.js index 4bbd2cd1..09e26fec 100644 --- a/src/index.js +++ b/src/index.js @@ -59,13 +59,13 @@ export default async function loader(content, sourceMap) { ? options.sourceMap : this.sourceMap; - const { plugins, processOptions, needExecute } = getPostcssOptions( + const { plugins, processOptions } = getPostcssOptions( this, loadedConfig, options.postcssOptions ); - if (options.exec || needExecute) { + if (options.execute) { // eslint-disable-next-line no-param-reassign content = exec(content, this); } diff --git a/src/options.json b/src/options.json index f86c5b96..2a8a44c0 100644 --- a/src/options.json +++ b/src/options.json @@ -71,7 +71,7 @@ } ] }, - "exec": { + "execute": { "description": "Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)", "type": "boolean" }, diff --git a/src/utils.js b/src/utils.js index 56be7608..61b1af1c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -200,14 +200,7 @@ function getPostcssOptions(loaderContext, config, postcssOptions = {}) { ...processOptionsFromOptions, }; - let needExecute = false; - if (typeof processOptions.parser === 'string') { - // TODO respect the `syntax` option too or remove this options - if (processOptions.parser === 'postcss-js') { - needExecute = true; - } - try { // eslint-disable-next-line import/no-dynamic-require, global-require processOptions.parser = require(processOptions.parser); @@ -246,7 +239,7 @@ function getPostcssOptions(loaderContext, config, postcssOptions = {}) { } } - return { plugins, processOptions, needExecute }; + return { plugins, processOptions }; } const IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\]|^\\\\/i; diff --git a/test/__snapshots__/exec.test.js.snap b/test/__snapshots__/exec.test.js.snap deleted file mode 100644 index 7767a494..00000000 --- a/test/__snapshots__/exec.test.js.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`"exec" option should work with "Boolean" value: css 1`] = ` -"a { - color: green -}" -`; - -exports[`"exec" option should work with "Boolean" value: errors 1`] = `Array []`; - -exports[`"exec" option should work with "Boolean" value: warnings 1`] = `Array []`; - -exports[`"exec" option should work with "JSS" parser: css 1`] = ` -"a { - color: yellow -}" -`; - -exports[`"exec" option should work with "JSS" parser: errors 1`] = `Array []`; - -exports[`"exec" option should work with "JSS" parser: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/execute.test.js.snap b/test/__snapshots__/execute.test.js.snap new file mode 100644 index 00000000..e0a368bb --- /dev/null +++ b/test/__snapshots__/execute.test.js.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`"execute" option should work with "Boolean" value: css 1`] = ` +"a { + color: green +}" +`; + +exports[`"execute" option should work with "Boolean" value: errors 1`] = `Array []`; + +exports[`"execute" option should work with "Boolean" value: warnings 1`] = `Array []`; + +exports[`"execute" option should work with "postcss-js" parser: css 1`] = ` +"a { + color: yellow +}" +`; + +exports[`"execute" option should work with "postcss-js" parser: errors 1`] = `Array []`; + +exports[`"execute" option should work with "postcss-js" parser: warnings 1`] = `Array []`; diff --git a/test/__snapshots__/validate-options.test.js.snap b/test/__snapshots__/validate-options.test.js.snap index 09bd4998..44681d0d 100644 --- a/test/__snapshots__/validate-options.test.js.snap +++ b/test/__snapshots__/validate-options.test.js.snap @@ -1,38 +1,38 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`validate options should throw an error on the "exec" option with "/test/" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "/test/" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; -exports[`validate options should throw an error on the "exec" option with "[]" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "[]" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; -exports[`validate options should throw an error on the "exec" option with "{"foo":"bar"}" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "{"foo":"bar"}" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; -exports[`validate options should throw an error on the "exec" option with "{}" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "{}" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; -exports[`validate options should throw an error on the "exec" option with "1" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "1" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; -exports[`validate options should throw an error on the "exec" option with "test" value 1`] = ` +exports[`validate options should throw an error on the "execute" option with "test" value 1`] = ` "Invalid options object. PostCSS Loader has been initialized using an options object that does not match the API schema. - - options.exec should be a boolean. + - options.execute should be a boolean. -> Enables/Disables PostCSS Parser support in 'CSS-in-JS' (https://github.com/postcss/postcss-loader#exec)" `; diff --git a/test/exec.test.js b/test/execute.test.js similarity index 90% rename from test/exec.test.js rename to test/execute.test.js index 7100f0b5..cd59079e 100644 --- a/test/exec.test.js +++ b/test/execute.test.js @@ -8,7 +8,7 @@ import { getWarnings, } from './helpers'; -describe('"exec" option', () => { +describe('"execute" option', () => { it('should work with "Boolean" value', async () => { const compiler = getCompiler( './jss/exec/index.js', @@ -26,7 +26,7 @@ describe('"exec" option', () => { { loader: path.resolve(__dirname, '../src'), options: { - exec: true, + execute: true, }, }, ], @@ -44,9 +44,9 @@ describe('"exec" option', () => { expect(getErrors(stats)).toMatchSnapshot('errors'); }); - it('should work with "JSS" parser', async () => { + it('should work with "postcss-js" parser', async () => { const compiler = getCompiler( - './jss/index.js', + './jss/postcss-js/index.js', {}, { module: { @@ -64,6 +64,7 @@ describe('"exec" option', () => { postcssOptions: { parser: 'postcss-js', }, + execute: true, }, }, ], diff --git a/test/fixtures/jss/index.js b/test/fixtures/jss/postcss-js/index.js similarity index 100% rename from test/fixtures/jss/index.js rename to test/fixtures/jss/postcss-js/index.js diff --git a/test/fixtures/jss/style.js b/test/fixtures/jss/postcss-js/style.js similarity index 100% rename from test/fixtures/jss/style.js rename to test/fixtures/jss/postcss-js/style.js diff --git a/test/validate-options.test.js b/test/validate-options.test.js index bebe9358..95e63b23 100644 --- a/test/validate-options.test.js +++ b/test/validate-options.test.js @@ -5,7 +5,7 @@ import { getCompiler, compile } from './helpers/index'; describe('validate options', () => { const tests = { - exec: { + execute: { success: [false], failure: [1, 'test', /test/, [], {}, { foo: 'bar' }], },