背景:最近公司有这样一个需求,需要开发一个react工具类,这个工具类可以用在其他项目里使用,并且这个工具类比较大,需要多人协作开发。

这个项目主要由同事负责,于是同事就将这个工具类当成一个单独的项目,之后将其打包放在公司的代码仓库中,随后只要在其他地方引入该库就可,即在package.json中用到下面这段代码。

git+https://github.com/dadafrank/UIWeb.git

并且还手动搭建了工具类的开发环境,为了总结最近学到的东西,自己也来手动试试。

开始搭建工具类的开发环境

首先,创建在指定地方创建文件夹,并打开。

mkdir test-react

初始化npm和git

npm init -ygit init

创建一下项目的整体结构和基本文件,在项目下创建public、webpack、src文件夹。

因为是react项目,所以先安装一下react和react-dom

npm i react react-dom

在src下创建components文件夹,并在components下创建一个demo.js的文件夹

import React from 'react'const Demo = () => {return (<div>这就是大家都需要的组件</div>)
}export default Demo;

在src下创建一个index.js

import React from 'react'
import reactDom from 'react-dom'import Demo from './components/demo.js'const App = () => {return (<><Demo /></>)
}reactDom.render(<App/>, document.getElementById('root'));

在public下创建一个index.html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>react项目</title>
</head>
<body><div id="root"></div>
</body>
</html>

安装webpack的基础依赖包

npm i webpack webpack-cli html-webpack-plugin webpack-dev-server babel-loader @babel/core @babel/preset-react @babel/preset-env -D

然后创建webpack的配置文件,分别创建webpack.config.dev.js、webpack.config.prod.js两个文件。

webpack.config.dev.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');const htmlWebpackPlugin = new HtmlWebpackPlugin({template: path.resolve(__dirname, '../public/index.html'),
});module.exports = {mode: 'development',                              entry: path.resolve(__dirname, '../src/index.js'),output: {                                         path: path.resolve(__dirname, '../dist'),      filename: 'js/[name].[hash].bundle.js',         },module: {rules: [              {test: /.(mjs|js|jsx)$/,exclude: /node_modules/,use: ['babel-loader'],}],},plugins: [htmlWebpackPlugin,],resolve: {extensions: ['.mjs', '.js', '.jsx'],},devServer: { // 这部分根据自己的需求设置host: '127.0.0.1',port: 8009,hot: true,// proxy: {//  'api': {//      target: 'http://xx.xx.xx.xx:xxxx',//      pathRewrite: {//          '^/api': '/api'//      },//      changeOrigin: true,//  }// }}
};

webpack.config.prod.js

const path = require('path');module.exports = {mode: 'production',                         entry: path.resolve(__dirname, '../src/components/demo.js'),output: {                                         path: path.resolve(__dirname, '../dist'),      filename: 'index.js',    libraryTarget: 'umd',libraryExport: 'default',library: "testReact",    },module: {rules: [              {test: /.(mjs|js|jsx)$/,exclude: /node_modules/,use: ['babel-loader'],}],},resolve: {extensions: ['.mjs', '.js', '.jsx'],},
};

项目下创建babel的配置文件.babelrc

{"presets": ["@babel/preset-react","@babel/preset-env"]
}

在package.json的scripts下添加两条命令

"start": "webpack-dev-server --config ./webpack/webpack.config.dev.js --progress",
"build": "webpack --config ./webpack/webpack.config.prod.js --progress"

ok,这样基本的环境配置应该就没问题,测试一下。

测试

执行npm run start

01

解决问题

上网查了一下发现是版本不匹配的问题,所以我换了一个webpack-cli

npm i webpack-cli@3.3.12 -D

再次测试

再次执行npm run start

02

没有报错,说明可以了,输入http://localhost:8009/看看

03

这就说明可以了,执行一下npm run build也能看到项目下多了一个dist文件夹,ok,这样项目就能在本地运行了。然后准备在其他项目引入此项目,首先我们需要修改一下package.json中修改一下main。

"main": "dist/index.js",

这样其他项目就知道用dist的index.js了。

将项目发布到仓库上

我这里用的是码云,在码云上创建仓库就直接省略啦。直接开始上传到仓库上的操作。

git add ***
git commit -m "第一次发布"
git remote add origin https://gitee.com/xxFrank/test-react.git
git push --set-upstream origin master

这里的add因为我没有写.gitignore文件的原因,所以自己慢慢add,大家注意不要把/node_modules给传上去了。

在新项目中将工具项目引入

为了方便,我直接用create-react-app来新建一个项目。

npx create-react-app new-react

随后,在新项目中的package.json的devDependencies中添加下面的代码。

"devDependencies": {"testReact": "git+https://gitee.com/xxFrank/test-react.git"},

然后再执行一次npm i,完成后在App.js中引入我们的工具。

import React from 'react'
import TestReact from 'testReact'function App() {return (<div className="App"><div>这里新项目,下面是引入的组件</div><TestReact /></div>);
}export default App;

执行npm run start,然后打开http://localhost:3000看看能不能用。

04

okok,这样说明我们就成功了。当然刚才我们手动搭建的项目还需要自己去添加css、图片等等的配置,大家有时间可以自己去试试,我就不重复写了。

呜呜呜,终于写好了,溜了溜了。

git 创建webpack项目_近期总结:手动搭建react项目,将项目从自己的库引入到新的项目中使用...相关推荐

  1. git 创建webpack项目_从 0 开始构建 webpack 项目【Webpack Book 翻译】

    在开始之前,请确保你使用的是 Node 的最新版本.至少是最新的 LTS(长期支持)版本,本书的配置基于 LTS 版本所写,你的终端需要有 node 和 npm 命令,Yarn 也是一个不错的选择,也 ...

  2. git 创建webpack项目_Webpack入门:从安装到配置

    文档 webpack 用于编译 JavaScript 模块. 一旦完成安装,你就可以通过 webpack 的 CLI 或 API 与其配合交互. 这里以入门者的角度(中文)介绍 webpack 的常用 ...

  3. 手动搭建 React 项目

    目录 一. 初始化项目 二. Webpack 配置 2.1 基础配置设置 2.2 安装基础插件包 2.3 测试 2.4 总结 三. 添加对 scss 样式文件的支持 3.1 TODO 3.2 webp ...

  4. git 创建webpack项目_使用webpack手动创建一个完整项目的全过程

    1.创建文件夹"webpack-study" 2.使用webstrom打开文件夹所在位置.在根目录上创建一个文件,文件命名为"src",在src文件下新建css ...

  5. git 创建webpack项目_从0到1开发一个小程序cli脚手架(一)创建页面/组件模版篇...

    github地址: https://github.com/jinxuanzheng01/xdk-cli cli工具是什么? 在正文之前先大致描述下什么是cli工具, cli工具英文名command-l ...

  6. git 创建webpack项目_一次create-react-app创建项目升级webpack的流水账

    不再赘述为什么要升级webpack4,有兴趣的小伙伴可以看一下 知乎:如何评价webpack4 下面撸起袖子开干: 克隆项目,新建分支 git checkout -b feature_webpack_ ...

  7. git 创建webpack项目_webpack项目的搭建及环境构建

    现如今,webpack已经快速进入前端开发人员的眼线(从1.0到4.X的版本的更新迭代),给前端开发也带来了很大的突破,webpack可以分析项目结构,模块化打包机,处理模块化依赖,转换成浏览器可运行 ...

  8. 2020.2idea怎么创建html模块_利用idea快速搭建一个项目

    一.前提准备:电脑安装好jdk1.8,安装好IDEA 二.步骤 1.点击创建一个新项目 2.选择 Spring initializr选项,这是一个非常方便的生成Springboot的工具,确认信息无误 ...

  9. git 创建邮箱 用户名_厉害了!IDEA中如何使用Git进行项目管理,完整教程来了?...

    第一部分:安装 1. 下载地址: https://git-scm.com/download/win如果速度慢, 使用 迅雷下载;2. 点击安装, 然后下一步, 直到下面这个页面: 建议: 按照上面所示 ...

最新文章

  1. Ubuntu 16.04下部署Graylog日志服务器
  2. cefSharp通过js操控页面,含跨域操控
  3. mysql win10 5.5_win10上MySql5.5版本升级到5.7
  4. POJ 2483 Cows(树状数组)
  5. 微型计算机广告牌实验报告,微型计算机实验报告1资料.doc
  6. 求一份100行左右的C语言程序,求4个C语言程序 每个100行左右 大一水平的
  7. Mac下安装MySQL
  8. 新的实现上下文对话的方法
  9. 项目杂-备注-说明-其他
  10. php zip 不能创建文件,PHP无法访问新创建的zip文件
  11. BZOJ 3384: [Usaco2004 Nov]Apple Catching 接苹果( dp )
  12. 干货 | 100亿+数据量,每天50W+查询,携程酒店数据智能平台实践
  13. 西门子PLC 1200和V20变频器USS通讯
  14. 计算机老提示安全证书到期,安全证书过期,教您怎么解决网站安全证书过期
  15. 机器学习笔记(吴恩达老师)
  16. 质量管理、质量保证、质量控制的区别
  17. Secure Boot什么意思?BIOS中Secure Boot灰色无法更改解决方法详解
  18. AnyLogic第二讲行人仿真空间逻辑讲解
  19. Win7有多条隧道适配器的原因及关闭方法
  20. 简单介绍asp模式与saas模式

热门文章

  1. HTTP请求解析过程 (简单概括)
  2. MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
  3. 格林斯潘的一句话造成昨天(5月24日)股市大跌后爬升的分析
  4. WebView与APP交互实战记录
  5. Linux知识汇总 (二)
  6. 赛门铁克调研发现越来越多的物联网设备被用于实施DDoS攻击
  7. 在Linux上安装Chef工作站
  8. 从零开始,CentOS6安装ghost博客
  9. [OpenGL] glColor 和 glClearColor 区别
  10. springmvc json结合