por*_*rou 3 reactjs webpack npx
我是一个使用 ReactJS 的菜鸟,现在我正在使用 React 制作一个小部件,我已经创建了不同的组件,我已经使用创建了应用程序npx create-react-app并且一切都在工作,但现在我正在尝试捆绑所有组件、css 和单个 .js 文件中的文件,以便能够在网页中安装小部件。
我的代码是这样的:
索引.js
应用程序.js
我刚刚看到一些帖子和博客表明我需要创建自己的 webpack.config.js 文件并放入如下内容:
`
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const glob = require('glob');
module.exports = {
entry: {
"bundle.js": glob.sync("build/static/?(js|css)/main.*.?(js|css)").map(f => path.resolve(__dirname, f)),
},
output: {
filename: "build/static/js/bundle.min.js",
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},
plugins: [new UglifyJsPlugin()],
}
Run Code Online (Sandbox Code Playgroud)
`
它创建了一个 .js 文件,但是当我将该文件放在 html 文档中时没有显示任何内容
最后我明白了!
默认情况下,npx create-react-app创建一个包含大量配置、文件夹和文件的结构,以便轻松开始使用 React 编写应用程序,其中一个配置是设置 webpack 以在我们键入“npm build”时创建一个“build”目录我们应用程序的组件并允许我们将其部署到任何地方,但在我的情况下,我只需要使用我正在创建的小部件分发一个 .js 文件,这个 .js 文件可以放置在任何 HTML 页面的 a 中,并且小部件将独立于页面工作,为此我遵循了以下步骤:
"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"
},
Run Code Online (Sandbox Code Playgroud)
请注意,我替换了“bundle”脚本,表示将执行“build:react”和“build:bundle”
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()],
}
Run Code Online (Sandbox Code Playgroud)
我告诉 webpack 它需要将 npx 自动创建的“index.js”文件作为入口点,webpack 也会创建一个 WidgetCL.js 作为输出,有趣的部分是在“模块”部分,几个小时后或问题,我可以配置两个“加载器”,一个用于 .css 文件,另一个用于我的小部件中的所有 .js 组件,使用 Babel 作为加载器。
{
"presets": [
"@babel/react" ,
"@babel/env"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我只需打开一个终端并输入“npm run build”,然后 webpack 创建“build”文件夹和“dist”文件夹,其中包含我的 .js 文件。
| 归档时间: |
|
| 查看次数: |
1087 次 |
| 最近记录: |