Я пытаюсь создать два проекта React:
Библиотека компонентов React (только компоненты без работающего приложения)
SPA-приложение, котороеиспользует созданные компоненты (примеры приложений)
Я хотел бы получить структуру папок, такую как:
./src
- каталог с компонентами React ./example
- содержит приложение SPA, которое использует компоненты ./src
В каталоге примеров есть файлы конфигурации (простейшая конфигурация React + webpack без HMR и других вещей):
webpack.config.js
const HtmlWebPackPlugin = require("html-webpack-plugin");
const aliases = require('./aliases.js');
module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader"
}
]
}
]
},
resolve: {
alias: aliases
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "./index.html"
})
]
};
aliases.js
var path = require('path');
module.exports = {
'webpack-alias-react': path.resolve(__dirname, '../src')
};
babel.rc
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
Конфигурация псевдонима VSCode находится в jsconfig.json
файле.
И есть моя проблема.Если ./src/SimpleComponent
содержит такой код:
const SimpleComponent = () => {
return 'string';
};
Запуск команды npm run build
создает рабочее приложение.
Но когда ./src/SimpleComponent
возвращает:
const SimpleComponent = () => {
return <div>abc</div>;
};
npm run buid
исключение команды:
ОШИБКА в ../src/SimpleComponent.js Ошибка сборки модуля (из ./node_modules/babel-loader/lib/index.js): SyntaxError: D: \Tranzystor \ webpack-alias-реагировать \ src \ SimpleComponent.js: неожиданный токен (4: 9)
Как решить эту проблему с конфигурацией webpack / Babel?
Почему можно написать <div>
в App.js
?
Это правильный подход?
Весь код здесь доступен.