uni-app打包小程序根据不同编译条件打包不同静态素材目录

这篇具有很好参考价值的文章主要介绍了uni-app打包小程序根据不同编译条件打包不同静态素材目录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在uni-app开发小程序的时候,我们经常有这样的需求,一个小程序,拥有多个不同样式的模板,发布的时候,为了减少包的体积,我们希望只打包当前使用的模板对应的静态素材目录,而其他模板的目录不打包进去。

在package.json中定义的模板变量如下:

"uni-app": {
        "scripts": {
                "tpl_more": {
                        "title": "猫模板",
                        "env": {
                                "UNI_PLATFORM": "mp-weixin"
                        },
                        "define": {
                                "TPL_MORE": true
                        }
                },
                "tpl_mars": {
                        "title": "mars火星模板",
                        "env": {
                                "UNI_PLATFORM": "mp-weixin"
                        },
                        "define": {
                                "TPL_MARS": true
                        }
                }
        }
}

每一个模板的静态素材对应在static下同名的目录,如下图:

uniapp webpack打包,uni-app,小程序,uni-app,多模板打包,Powered by 金山文档

如何实现Hbuilder运行tpl_more时,只打包static/tpl_more;运行tpl_mars时,只打包static/tpl_mars呢。

这里需要使用webpack的cleanWebpack插件,实现逻辑是,在build包以后,按package.json中的编译条件,删除static下多余的素材目录,在项目根目录下创建vue.config.js,代码如下:

const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin') //最新版本copy-webpack-plugin插件暂不兼容,推荐v5.0.0
const {CleanWebpackPlugin} = require('clean-webpack-plugin');

//获取package.json定义的模板变量
const Templates = process.UNI_SCRIPT_DEFINE;
let clearDir = [];
console.log("===Templates===", Templates);
for(let key in Templates){
    //该模板未启用
    if(!Templates[key]){
        clearDir.push("static/"+key.toLowerCase());
    }
}

module.exports = {
    configureWebpack: {
        plugins: [
            //删除未启用的模板对应的静态资源目录
            new CleanWebpackPlugin({cleanAfterEveryBuildPatterns:clearDir}), 
           //  new CopyWebpackPlugin([
              //   {
                 //    from: path.join(__dirname, 'static/tpl_mars'),
                 //    to: path.join(__dirname, 'unpackage', 'dist', process.env.NODE_ENV === 'production' ? 'build' : 'dev', process.env.UNI_PLATFORM, 'static/tpl_mars2'),
                    // //ignore: ['*'],
              //   }
           //  ]),    
        ]
    }
}

在Hbuilder运行tpl_more时,在微信开发者工具中,查看static目录,只有tpl_more子目录,没有tpl_mars;同理,运行tpl_mars时,static目录下也只有tpl_mars子目录。文章来源地址https://www.toymoban.com/news/detail-693042.html

到了这里,关于uni-app打包小程序根据不同编译条件打包不同静态素材目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HBuilder X + uni-app 打包 App、小程序等操作

    uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。 在HBuilder X中 我们可以点击新建-项目,选择第一个空框架,根据学习需要也

    2024年02月12日
    浏览(54)
  • uni-app(微信小程序) 根据小程序页面路径(可带参数) 生成二维码、分享码

    微信官方文档 小程序 看文档点这里 第一个获取小程序码,就是根据你要通过二维码打开的页面路径生成一个小程序码,且这个小程序码是永久的 其实文档内也说明了,很少用到。即使需要生成这样的小程序码,可以去微信公众平台的小程序管理后台生成,还方便。 调用方

    2024年02月06日
    浏览(65)
  • uni-app打包运行成微信小程序,一看就会

     不废话,直接甩步骤: 1.对HX(HBulider X)编译器配置 选择运行配置:设置微信开发者工具的位置 2.uniapp项目配置 找到自己项目的manifest.json,选择微信小程序,填写自己的appid 3.微信开发者工具设置 打开微信小程序的服务端口 设置 - 安全设置 - 打开端口号 4.在HX中编译成微信小

    2024年02月21日
    浏览(60)
  • 【uni-app】uni项目打包微信小程序中使用 ECharts (mpvue-echarts)

    在小程序里画图表,uniapp 不想引入 u-charts怎么办,个人还是喜欢用echarts 先看成品图 说明: 示例下载-- 完整dom 如果你想要在单页面渲染多个图标可以看看:这里(相关文章传送门) 原生小程序使用的是 echarts-for-weixin ,具体地址如下: https://github.com/ecomfe/echarts-for-weixin 想在

    2024年02月07日
    浏览(60)
  • uni-app 开发微信小程序 自动化编译/启动项目

          最近开发一个uni-app的小程序项目,因为习惯使用vscode 而项目不得不借助hbuderx 运行,微信开发工具调试,偶尔还需要使用 ios模拟器, 8g内存的mac 就变的异常卡顿,所以就研究了下通过npm命令去编译、 运行等工程化配置, 这样就不用运行hbuderx 减少内存使用,顺便 

    2024年02月07日
    浏览(57)
  • 【uni-app系列】uni-app之App打包

    选择菜单项 “发行” - “原生App-云打包”: 输入相关信息: 第一次安装时会提示安装依赖: 提示打包校验信息,点击【继续打包】: 如果没有实名认证,提示如下信息: 可以通过修改 manifest.json 取消通讯录权限或进行实名认证处理,本文通过实名认证处理。 登录 DCloud

    2024年02月08日
    浏览(76)
  • uni-app编译成钉钉小程序,uViewUI组件样式失效,自定义组件样式失效

    公司项目需要把原本用 uinapp 开发的微信小程序想要在钉钉上也能使用,然后就打算用uniapp编译成钉钉小程序,看看是否有坑,不试不知道,一试吓一跳,官方没有提供钉钉的编译方式,按照网上文章的配置编译成钉钉小程序后,初步发现, uView-ui的icon没啦 ,然后样式和布局

    2024年02月11日
    浏览(57)
  • uni-app开发使用uni-ui组件uni-data-checkbox编译微信小程序报错

    uniapp开发使用uni-ui控件uni-data-checkbox,编译成微信小程序报错VM50 WAService.js:1 TypeError: Cannot read property \\\'length\\\' of undefined,并且页面无法显示。  解决方法: 1、 HBuilder X 编译器下载 sass 或更新 HBuilder X 版本 2、更新uni-ui组件库 3、如果不使用uniCloud就注释uni-data-checkbox.vue文件中的

    2024年02月06日
    浏览(75)
  • uni-app判断不同端

    大家好,今天给大家分享的知识是在uni-app中如何区分是在什么端操作的程序 话不多说直接上代码: 通过以上三段代码即可分别出在哪个端操作的程序,我们可以对此进行不同的操作

    2024年02月21日
    浏览(36)
  • uni-app(微信小程序)自定义日期选择器和时间选择器,解决IOS端和安卓端显示不同问题

    原本用的原生组件picker,设置了开始时间和结束时间,安卓端可以显示可选日期时间部分,但是IOS显示的内容包括一整天时间和N个年,本来只需要选择其中七天,那么其他天不显示,IOS端可以滑到其他日期位置,但是会自己滚回来 IOS端: 安卓: 这里只需要八点后和19点前(

    2024年02月16日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包