diff --git a/packages/bem-react-scripts/config/jest/babelTransform.js b/packages/bem-react-scripts/config/jest/babelTransform.js index e619692f241..a70448f8bf6 100644 --- a/packages/bem-react-scripts/config/jest/babelTransform.js +++ b/packages/bem-react-scripts/config/jest/babelTransform.js @@ -9,6 +9,8 @@ 'use strict'; const babelJest = require('babel-jest'); +const bemConfig = require('bem-config')(); +const levels = Object.keys(bemConfig.levelMapSync()); module.exports = babelJest.createTransformer({ presets: [require.resolve('babel-preset-react-app')], @@ -16,7 +18,7 @@ module.exports = babelJest.createTransformer({ [ require.resolve('babel-plugin-bem-import'), { - levels: [`./src/common/`, `./src/desktop/`, `./src/touch/`], + levels, techs: ['js'], }, ], diff --git a/packages/bem-react-scripts/config/webpack.config.dev.js b/packages/bem-react-scripts/config/webpack.config.dev.js index 999e033e577..9777250389f 100644 --- a/packages/bem-react-scripts/config/webpack.config.dev.js +++ b/packages/bem-react-scripts/config/webpack.config.dev.js @@ -16,8 +16,10 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin'); const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin'); const WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin'); +const bemConfig = require('bem-config')(); const getClientEnvironment = require('./env'); const paths = require('./paths'); +const levels = Object.keys(bemConfig.levelMapSync()); // @remove-on-eject-begin // `path` is not used after eject - see https://github.com/facebookincubator/create-react-app/issues/1174 @@ -137,7 +139,7 @@ module.exports = { { loader: 'webpack-bem-loader', options: { - levels: [`./src/common`, `./src/desktop`, `./src/touch`], + levels, techs: ['js', 'css'], }, }, diff --git a/packages/bem-react-scripts/package.json b/packages/bem-react-scripts/package.json index 89c1b6750f4..50471ef2d91 100644 --- a/packages/bem-react-scripts/package.json +++ b/packages/bem-react-scripts/package.json @@ -32,6 +32,7 @@ "babel-preset-es2015": "^6.9.0", "babel-preset-react-app": "^2.1.1", "babel-runtime": "^6.20.0", + "bem-config": "^3.2.3", "bem-react-core": "^0.2.0", "case-sensitive-paths-webpack-plugin": "1.1.4", "chalk": "1.1.3", diff --git a/packages/bem-react-scripts/template/.bemrc b/packages/bem-react-scripts/template/.bemrc new file mode 100644 index 00000000000..dfe8cc20948 --- /dev/null +++ b/packages/bem-react-scripts/template/.bemrc @@ -0,0 +1,15 @@ +{ + "root": true, + "levels": { + "./src/common": { + "scheme": "nested", + "default": true + }, + "./src/desktop": { + "scheme": "nested" + }, + "./src/touch": { + "scheme": "nested" + } + } +}