美文网首页我爱编程
开发环境和生产环境区分测试api

开发环境和生产环境区分测试api

作者: wdy934_ | 来源:发表于2018-04-10 23:17 被阅读0次

    以webpack配置为例( 配置可自定义. 如: 开发环境一份, 生产环境一份, 如果需要, 再加一份测试版生产环境一份 )

    方法一: 简单快捷

    let schema = 'http';
    if (process.env.NODE_ENV === 'production') {
        schema = 'https';
        baseURL = `${schema}://192.168.13.*:10523`;
    }
    else {
        baseURL = `${schema}://www.***.com`;
    }
    

    方法二:
    copy-webpack-plugin 功能: 拷贝资源:
    from 定义要拷贝的源目录 from: __dirname + ‘/src/public’
    to 定义要拷贝到的目标目录 from: __dirname + ‘/dist’
    toType file 或者 dir 可选,默认是文件
    force 强制覆盖先前的插件 可选 默认false
    context 可选 默认base context可用specific context
    flatten 只拷贝文件不管文件夹 默认是false
    ignore 忽略拷贝指定的文件 可以用模糊匹配

    下面的代码(用法)放置webpack的plugins [] 里面

    new CopyWebpackPlugin([
          {
            from: path.resolve(__dirname, '../static'), // 这里是拷贝后文件放置的目录位置
            to: config.build.assetsSubDirectory, //这里是需要拷贝的资源文件
            ignore: ['.*']
          }
        ])
    

    generate-asset-webpack-plugin 功能: 生成文件至某个目录下 :
    tip: 当初用这个插件,是因为 , 需要在开发环境和测试环境还有生成环境下用到不同的api的 ip地址 ,

    let  config = {
      testDev: {
         apiUrl: "http:// xxx.xxxx.com"
       }
    }
    
    var GenerateAssetPlugin = require('generate-asset-webpack-plugin');
    function createServerConfig(compilation){
        let cfgJson=config.testDev.apiUrl;
        return JSON.stringify(cfgJson);
    }
    

    下面的代码(用法)放置webpack的plugins [] 里面

    new GenerateAssetPlugin({
            filename: 'static/server.config.json',
            fn:(compilation, cb)=>{
                cb(null, createServerConfig(compilation))
            }
        })
    

    /////////////////////////////////////////////////////////-------------------------------------------
    贴上自己的项目webpack的简单配置:

    // config.js
    module.exports = {
          dev:{
                apiUrl: "http://xxx.xxx.com"
          },
          build: {
               apiUrl: "http://xxx.xxxxx.com"
          }
    }
    
    // webpack.build.js
    const path = require('path');
    const config = require('./config')
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const CopyWebpackPlugin = require('copy-webpack-plugin');
    
    
    function createServerConfig(compilation){
        let cfgJson=config.build.apiUrl;
        return JSON.stringify(cfgJson);
    }
    module.exports = {
        entry: path.resolve(__dirname, 'src/index.js'),
        output: {
            path: path.resolve(__dirname, 'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules: [
                {
                    test: /\.(js|jsx)$/,
                    use: [
                        {
                            loader: 'babel-loader',
                            options: {
                                "presets": ["env", "react", "stage-2"]
                            }
                        }
                    ],
                    exclude: /node_modules/
                }, {
                    test: /\.css$/,
                    loader: "style-loader!css-loader"
                }, {
                    test: /\.less$/,
                    loader: "style-loader!css-loader!less-loader"
                }
            ]
        },
        resolve: {
            extensions: ['.js', '.jsx']
        },
        plugins: [
            new HtmlWebpackPlugin({ 
                title: 'manage', 
                filename: "index.html", 
                inject: 'body' 
            }),
            new GenerateAssetPlugin({
                filename: 'static/server.config.json',
                fn: (compilation, cb) => {
                    cb(null, createServerConfig(compilation))
                }
            })
        ]
    };
    

    相关文章

      网友评论

        本文标题:开发环境和生产环境区分测试api

        本文链接:https://www.haomeiwen.com/subject/iieohftx.html