搭建完美的React开发生产测试环境(三)
如果看了此文你还不是很清楚很多细节的问题,可以戳我的 Demo 希望对你有所帮助 前言上一篇继续第一篇,说了如何从零快速搭建一个启动在本地的并且能够进行热重载的 本篇继续上文,说说如何抽离项目中的基础配置,在项目中配置 说的不准确,或者有错误,多多指教,多多指教,多多指教。 抽离项目中的基础配置为什么要把很多基础配置从服务器文件中抽离出来,原因很简单,方便维护,方便修改其中内容。 创建config文件夹在项目根目录下创建 $ cd qz-react-init $ mkdir config 创建开发、生产配置文件在
export default { NODE_ENV: '"development"' }
export default { NODE_ENV: '"production"' } 区别不大,只是在 创建入口配置文件在 import prodEnv from './prod.env' import devEnv from './dev.env' export default { build: { // 运行环境 env: prodEnv },dev: { // 运行环境 env: devEnv,// 开发运行端口 port: 3030,// 是否自动打开浏览器窗口 autoOpenBrowser: true,// 编译输出的二级目录 assetsSubDirectory: 'static',// 编译发布的根目录 assetsPublicPath: '/' } } 现在我们已经把常用的配置都抽离到了配置文件中,然后修改一下 import config from '../config' // 首先引入配置文件 // 默认开发环境 if (!process.env.NODE_ENV) { process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) } // 监听端口 const port = process.env.PORT || config.dev.port // 是否自动打开网页 const autoOpenBrowser = !!config.dev.autoOpenBrowser // 设置服务器静态文件目录 const staticPath = path.posix.join(config.dev.assetsPublicPath,config.dev.assetsSubDirectory) app.use(staticPath,express.static('./static')) 这样我们就把配置选项都单独的抽离出来了,后期要想修改 编译完成自动打开浏览器写程序的目的就是为了偷懒,所以我们绝对不会放过任何偷懒的机会,像打开浏览器然后输入网站这种没有技术含量的事情当然是能省就省,所以让我们省略这一步吧。 安装插件能够自动打开浏览器的插件还是比较多的,像 $ npm install opn --save-dev 修改服务入口文件dev-server.js这个时候我已经有可以自动打开浏览器的插件了,我们就可以开始使用了撒。 // 引入opn import opn from 'opn' // 定义要打开的网址 const uri = 'http://localhost:' + port // 打包完毕之后打开浏览器 console.log('> Statring dev server...') // 见后 devMiddleware.waitUntilValid(() => { console.log('> Listening at ' + uri + 'n') // 判断是否自动打开浏览器 if (autoOpenBrowser) { opn(uri) } }) 这边我们用到了一个 加入eslint我们在日常码代码的时候可能会经常听到这个东东 安装依赖既然要使用当然还是需要一些依赖的,我们先用几个比较基础的。 $ npm install eslint eslint-loader babel-eslint --save-dev
创建eslint配置文件
{ "root": true,"parser": "babel-eslint","parserOptions": { "ecmaVersion": 6,"sourceType": "module","ecmaFeatures": { "jsx": true } },"globals": { "document": true },"rules": { "indent": ["error",2] } } 看看上面的配置,在规则那里我只写了一条,我们一条一条的来解析它。
修改webpack配置文件除了上述全局配置 { // 匹配所有的 .js .jsx 文件 test: /(.js|.jsx)$/,// 只包含这些文件 src 和 test 目录 include: packFiles,// eslint-loader加载器优先执行 enforce: 'pre',// 使用的加载器 loader: 'eslint-loader' } 创建eslint忽略文件有时候有些文件并不想被 build/*.js node_modules/*.js webpack.*.js 最后的项目结构为: ├── build │ ├── dev-server.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js ├── config │ ├── dev.env.js │ ├── index.js │ ├── prod.env.js ├── node_modules ├── src │ ├── main.js ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitignore ├── index.html ├── LICENSE ├── package.json └── README.md 本节就到这里,其实还有一些东西可以完善。 本篇结尾其实我们还有东西可以在修改,比如 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |