Наконец-то я понял!,
По умолчанию npx create-react-app
создайте структуру с множеством конфигураций, папок и файлов, чтобы можно было легко приступить к написанию кода приложения в React, настраивается один из этих конфигов Webpack для создания каталога «build», когда мы набираем «npm build» со всеми компонентами нашего приложения и позволяем нам его развертывать везде, но в моем случае мне просто нужно было распространить файл. js с виджет, который я создаю, этот файл. js может быть помещен внутри a на любой странице HTML, и виджет будет работать отдельно, независимо от страницы, чтобы сделать это, я выполнил следующие действия:
1) Во-первых, мне нужно изменить в файле «package. json» раздел «scripts», чтобы указать, что webpack создаст не только каталог «build», но и комплект. js со всеми CSS, images, components.
"scripts": {
"start": "react-scripts start",
"build": "npm run build:react && npm run build:bundle",
"build:react": "react-scripts build",
"build:bundle": "webpack --config webpack.config.js",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Обратите внимание, что я заменил скрипт "bundle", указывая, что он будет выполнять "build: реагировать" и "build: bundle"
2) Как мы видим, "build: bundle" w Примем конфигурацию «webpack.config. js», в нашей начальной конфигурации у нас нет этого файла, потому что webpack автоматически настраивается с помощью «npx create-response-app», поэтому нам нужно создать этот файл в root путь нашего приложения и создание конфигурации, чтобы сообщить веб-пакету, который должен объединить все, моя конфигурация такова:
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
module.exports = {
entry: {
entry: './src/index.js',
},
output: {
filename: "build/static/js/WidgetCL.js",
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
{
test: /\.m?js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-transform-runtime']
}
}
}
],
},
plugins: [new UglifyJsPlugin()],
}
Я говорю веб-пакету, который должен взять индекс ". js "файл, созданный автоматически npx в качестве точки входа, также webpack создаст WidgetCL. js в качестве вывода, интересная часть - это раздел« модуль », через несколько часов или проблем я могу настроить два« Загрузчика », один для файлов. css и другой для всех компонентов. js в моем виджете, используя Babel в качестве загрузчика.
3) Чтобы использовать Babel, мне нужно было создать файл с именем .babelr c в пути root моего проекта и настройте его таким образом
{
"presets": [
"@babel/react" ,
"@babel/env"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
После этого я просто открываю терминал и набираю "npm run build", затем webpack создает "build" папка d, а также папка dist с файлом mi. js.