美文网首页
webpack配置常见问题

webpack配置常见问题

作者: BigTooth_3611 | 来源:发表于2019-02-22 09:41 被阅读0次

    vue项目中配置问题

    通过webpack之externals配置引入外部插件,减少打包vendor体积

    1.在index.html里引入vue.min.js,vuex.min.js等等

    <script type="text/javascript" src="./static/vendor/js/vue.min.js"></script>
     <script type="text/javascript" src="./static/vendor/js/vuex.min.js"></script>
    

    2.在build/webpack.base.conf.js下

    module.exports = {
      context: path.resolve(__dirname, '../'),
      entry: {
        app: './src/main.js'
      },
      // 这里需要将vue和vue-router公开出去,供全局使用
      //这里小写的(即冒号左边的)vue和vue-router是我们引入资源时对应的名字,
      //冒号右面的是由库的主人暴露出来的全局方法名
      externals: {
       'vue': 'Vue',
        "element-ui": "ELEMENT",
        "vue-router": "VueRouter",
        "vuex": "Vuex",
        "qs": "qs",
        "axios": "axios",
        "jquery": "$",
      },
      output: {}
    // 其他...
    }
    

    webpack 配置局域网ip地址

    config/index.js

    module.exports = {
      dev: {
    
        // Paths
      ......
      // 配置代理解决跨域
        proxyTable: {
            '/api': {
                target: 'http://xx.com.cn/',
                changeOrigin: true, //是否跨域
                pathRewrite: {
                    '^/api': ''
                }
            }
        },
        // 配置局本地ip地址
        host: '0.0.0.0', // 设置为0.0.0.0就可以访问本地ip地址了
        port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
       .....
      },
    
      build: {}
    }
    

    配置代理解决跨域

    1.在config/index.js

    module.exports = {
      dev: {
    
        // Paths
      ......
      // 配置代理解决跨域
        proxyTable: {
            '/api': {
                target: 'http://xx.com.cn/',
                changeOrigin: true, //是否跨域
                pathRewrite: {
                    '^/api': ''
                }
            }
        },
        // 配置局本地ip地址
        host: '0.0.0.0', // 设置为0.0.0.0就可以访问本地ip地址了
        port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
       .....
      },
    
      build: {}
    }
    

    2.在src/main.js

    Vue.config.productionTip = false
    // 打包替换本地代理
    Vue.prototype.api = process.env.NODE_ENV === 'production' ? '' : '/api';
    // vue loading全局组件
    Vue.component('loading', {
        template: '<div class="zh-loading2" style="display: block;"><ul><li></li><li></li><li></li><li></li></ul><p>正在加载...</p></div>'
    });
    
    new Vue({
        el: '#app',
        render: h => h(App),
        router,
        components: { App },
        template: '<App/>',
        store
    })
    
    

    解决调用后端接口时,需要先登录的问题

    如同:
    在src/main.js中

    export default {
        name: 'App',
        components: {
           
        },
        data() {
            return {
               
            }
        },
        computed: {
            ...mapState(['runwayNum'])
        },
        methods: {
           
        },
        created() {
            // 在开发环境
            if(process.env.NODE_ENV === 'development') {
              // 设置接口cookie为接口地址已登录的cookid
              document.cookie = 'ci_session=xxxxxx';
            }
        },
        mounted() {
        }
    }
    

    一个模块里,不要有index.vue和index.js,因为index.js的优先级最高

    webpack打包路径修改

    build: {
        // Template for index.html
        index: path.resolve(__dirname, '../dist/index.html'),
    
        // Paths 路径修改
        assetsRoot: path.resolve(__dirname, '../dist'),
        assetsSubDirectory: 'static/release_sort',
        assetsPublicPath: '/',
    
        /**
         * Source Maps
         */
    
        productionSourceMap: true,
        // https://webpack.js.org/configuration/devtool/#production
        devtool: '#source-map',
    
        // Gzip off by default as many popular static hosts such as
        // Surge or Netlify already gzip all static assets for you.
        // Before setting to `true`, make sure to:
        // npm install --save-dev compression-webpack-plugin
        productionGzip: false,
        productionGzipExtensions: ['js', 'css'],
    
        // Run the build command with an extra argument to
        // View the bundle analyzer report after build finishes:
        // `npm run build --report`
        // Set to `true` or `false` to always turn it on or off
        bundleAnalyzerReport: process.env.npm_config_report
      }
    

    react项目中配置问题

    1.配置代理解决跨域
    修改script/start.js文件


    image.png
    // Create a webpack compiler that is configured with custom messages.
        const compiler = createCompiler({
         .....
        });
        // Load proxy config 修改proxy配置
        const proxySetting = require(paths.appPackageJson).proxy;
        let proxyConfig = prepareProxy(proxySetting, paths.appPublic);
        proxyConfig = {
            '/api/**': {      // 匹配访问地址中包含api的,如果http://baidu.com/api/page 
                target: 'http://....com.cn/',  //要跨域访问的地址
                changeOrigin: true,
            },
        }
      
        // Serve webpack assets generated by the compiler over a web server.
        const serverConfig = createDevServerConfig(
          proxyConfig,
          urls.lanUrlForConfig
        );
        const devServer = new WebpackDevServer(compiler, serverConfig);
    

    相关文章

      网友评论

          本文标题:webpack配置常见问题

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