经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » webpack » 查看文章
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
来源:jb51  时间:2019/8/30 9:11:42  对本文有异议

需求原因

      原来的项目中域名是打包到项目里面的,打包后不能动态配置,只能通过不同的指令打包来切换域名,每天都在测试域名和正式域名来回摩擦,后台大佬说你们可以生成一个配置文件这样就不用频繁打包了直接修改配置文件就好,于是就有了这篇文章。

第一步 安装插件     

  1. npm install --save-dev generate-asset-webpack-plugin

第二步 新建配置文件

在项目的根目录下新建 serverConfig.json 以后会根据这个文件去生成打包的配置文件

  1. {"ProdUrl":http://text.com}

第三步 引入generate-asset-webpack-plugin

在build/webpack.prod.conf.js中添加

  1. const GenerateAssetPlugin = require('generate-asset-webpack-plugin');
  2. const serverConfig = require('../serverConfig.json');//引入根目录下的配置文件
  3. const createJson = function() {
  4. return JSON.stringify(serverConfig);
  5. };
  6. //plugins 中使用
  7. plugins: [
  8. //打包时生成一个配置文件
  9. new GenerateAssetPlugin({
  10. filename: 'serverConfig.json',
  11. fn: (compilation, cb) => {
  12. cb(null, createJson());
  13. },
  14. }),
  15. ]

第四步 使用配置文件中的内容

这里根据不同项目不同需求代码自行变换,我分享一下我的项目里的使用,项目中封装了axios,并对请求拦截做了处理

  1. service.interceptors.request.use(
  2. async (config) => {
  3. var baseURL = process.env.BASE_API
  4. if(process.env.NODE_ENV === "production"){
  5. await axios.get('serverConfig.json').then( e => {
  6. baseURL = e.data.ProdUrl
  7. })
  8. }
  9. config.baseURL = baseURL
  10. if (store.getters.token) {
  11. // 让每个请求携带token
  12. config.headers["X-Token"] = getToken();
  13. config.headers = {
  14. "X-Token": getToken(),
  15. "Content-Type": "application/json-patch+json"
  16. };
  17. }
  18. return config;
  19. },
  20. error => {
  21. // Do something with request error
  22. console.log(error); // for debug
  23. Promise.reject(error);
  24. }
  25. );

变黄的部分则是获取配置文件的方法,由于是使用axios获取,是异步方法,根据情况进行处理。、

好了接下来就再也不用为了域名每天build了

打包后的目录

总结

以上所述是小编给大家介绍的webpack + vue 打包生成公共配置文件(域名) 方便动态修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号