当前位置: 首页 > news >正文

电脑下载17zwd一起做网站什么是网站改版

电脑下载17zwd一起做网站,什么是网站改版,手机发布WordPress文章,上海人才市场招聘网首先一个基础分包方案#xff1a; 包不用区分渠道#xff0c;只是通过文件名进行区分#xff0c;公共代码逻辑可以通过mixins进行混入。 这样分包后就需要在打包时只针对编译的渠道包文件进行替换打包#xff0c;其他渠道包的文件不打包进去#xff0c;通过工具类实现…首先一个基础分包方案 包不用区分渠道只是通过文件名进行区分公共代码逻辑可以通过mixins进行混入。 这样分包后就需要在打包时只针对编译的渠道包文件进行替换打包其他渠道包的文件不打包进去通过工具类实现替换。 项目主目录下的manifest.json 和 pages.json 可以是空内容都是通过工具类将prebuild目录下不同渠道不同平台的对应文件内容复制然后写到项目主目录下去的。 先看主要配置文件 //package.json {name: demo,config: {dev: cross-env NODE_ENVdevelopment uniapp-cli custom,pro: cross-env NODE_ENVproduction uniapp-cli custom},version: 0.1.0,private: true,scripts: {dev:ks-brandA: cross-env-shell $npm_package_config_dev bd-brandA --minimize,dev:tt-brandA: cross-env-shell $npm_package_config_dev tt-brandA --minimize,dev:bd-brandA: cross-env-shell $npm_package_config_dev ks-brandA --minimize,build:bd-brandA: cross-env-shell $npm_package_config_pro bd-brandA --minimize,build:tt-brandA: cross-env-shell $npm_package_config_pro tt-brandA --minimize,build:ks-brandA: cross-env-shell $npm_package_config_pro ks-brandA --minimize,dev:ks-brandB: cross-env-shell $npm_package_config_dev bd-brandB --minimize,dev:tt-brandB: cross-env-shell $npm_package_config_dev tt-brandB --minimize,dev:bd-brandB: cross-env-shell $npm_package_config_dev ks-brandB --minimize,build:bd-brandB: cross-env-shell $npm_package_config_pro bd-brandB --minimize,build:tt-brandB: cross-env-shell $npm_package_config_pro tt-brandB --minimize,build:ks-brandB: cross-env-shell $npm_package_config_pro ks-brandB --minimize,},dependencies: {dcloudio/uni-app: ^2.0.2-3081220230817001,dcloudio/uni-app-plus: ^2.0.2-3081220230817001,dcloudio/uni-h5: ^2.0.2-3081220230817001,dcloudio/uni-i18n: ^2.0.2-3081220230817001,dcloudio/uni-mp-360: ^2.0.2-3081220230817001,dcloudio/uni-mp-alipay: ^2.0.2-3081220230817001,dcloudio/uni-mp-baidu: ^2.0.2-3081220230817001,dcloudio/uni-mp-jd: ^2.0.2-3081220230817001,dcloudio/uni-mp-kuaishou: ^2.0.2-3081220230817001,dcloudio/uni-mp-lark: ^2.0.2-3081220230817001,dcloudio/uni-mp-qq: ^2.0.2-3081220230817001,dcloudio/uni-mp-toutiao: ^2.0.2-3081220230817001,dcloudio/uni-mp-vue: ^2.0.2-3081220230817001,dcloudio/uni-mp-weixin: ^2.0.2-3081220230817001,dcloudio/uni-mp-xhs: ^2.0.2-3081220230817001,dcloudio/uni-quickapp-native: ^2.0.2-3081220230817001,dcloudio/uni-quickapp-webview: ^2.0.2-3081220230817001,dcloudio/uni-stacktracey: ^2.0.2-3081220230817001,dcloudio/uni-stat: ^2.0.2-3081220230817001,dcloudio/uni-ui: ^1.4.28,vue/shared: ^3.0.0,core-js: ^3.8.3,crypto-js: ^3.1.9-1,flyio: ^0.6.2,vue: 2.6.14 2.7,vuex: ^3.2.0},devDependencies: {dcloudio/types: ^3.3.2,dcloudio/uni-automator: ^2.0.2-3081220230817001,dcloudio/uni-cli-i18n: ^2.0.2-3081220230817001,dcloudio/uni-cli-shared: ^2.0.2-3081220230817001,dcloudio/uni-helper-json: *,dcloudio/uni-migration: ^2.0.2-3081220230817001,dcloudio/uni-template-compiler: ^2.0.2-3081220230817001,dcloudio/vue-cli-plugin-hbuilderx: ^2.0.2-3081220230817001,dcloudio/vue-cli-plugin-uni: ^2.0.2-3081220230817001,dcloudio/vue-cli-plugin-uni-optimize: ^2.0.2-3081220230817001,dcloudio/webpack-uni-mp-loader: ^2.0.2-3081220230817001,dcloudio/webpack-uni-pages-loader: ^2.0.2-3081220230817001,vue/cli-plugin-babel: ~5.0.0,vue/cli-service: ~5.0.0,babel-plugin-import: ^1.11.0,clean-webpack-plugin: ^4.0.0,copy-webpack-plugin: ^11.0.0,cross-env: ^7.0.2,jest: ^25.4.0,less: ^4.1.3,less-loader: ^7.3.0,mini-types: *,miniprogram-api-typings: *,postcss-comment: ^2.0.0,sass: ^1.49.8,sass-loader: ^8.0.2,vue-template-compiler: 2.6.14 2.7,webpack-cli: ^5.1.4,vconsole: ^3.15.0},browserslist: [Android 4.4,ios 9],uni-app: {scripts: {tt-brandA: {env: {UNI_PLATFORM: h5},define: {MP-BRANDA: true}},ks-brandA: {env: {UNI_PLATFORM: mp-kuaishou},define: {MP-BRANDA: true}},tt-brandB: {env: {UNI_PLATFORM: h5},define: {MP-BRANDB: true}},ks-brandB: {env: {UNI_PLATFORM: mp-kuaishou},define: {MP-BRANDB: true}},bd-brandB: {env: {UNI_PLATFORM: mp-baidu},define: {MP-BRANDB: true}},}} }//src/pages.js:: 直接复制 prebuild下对应brand和平台platform下的pages.js文件 const {getApp,getHostCode} require(../prebuild/env); const path require(path) module.exports (pagesJson, loader) {let brandName getApp();let code getHostCode()const srcPath path.join(__dirname, ../prebuild/${brandName}/pages-${code}.js)let pagesJsonNew require(srcPath)loader.addDependency(require.resolve(srcPath))return pagesJsonNew }//vue.config.js const fs require(fs); const CopyWebpackPlugin require(copy-webpack-plugin) const {CleanWebpackPlugin} require(clean-webpack-plugin) const {getApp,getOS} require(./prebuild/env);/** 本函数重定向输出路径到下面路径 ** */ function rebuildOutputPath(brand) {let separator getOS() win ? \\ : /const lastIndex process.env.UNI_OUTPUT_DIR.lastIndexOf(separator)let pre process.env.UNI_OUTPUT_DIR.substring(0, lastIndex)console.log(vue.config--buildOutputPath::,process.env.UNI_OUTPUT_DIR.substring(lastIndex))process.env.UNI_OUTPUT_DIR process.env.UNI_OUTPUT_DIR.substring(lastIndex) separator brand }const brandName getApp() rebuildOutputPath(brandName)let clearDir [static/img-*] module.exports {chainWebpack: (config) {//本插件将图片资源目录例如img-brandA 拷贝到输出目录的static/img下面config.plugin(copy).use(CopyWebpackPlugin, [{patterns: [{from: src/static/img-${brandName},to: static/imgs/}]}])//本插件将输出目录下重复无效的/static/img-*目录删除掉config.plugin(clean).use(CleanWebpackPlugin, [{cleanAfterEveryBuildPatterns: clearDir}])//本插件进行预编译相关的拷贝工作拷贝指定brand的manifest和生成build.lessconfig.plugin(CopyPlugin).use(require(./prebuild/CopyPlugin, [{brand: brandName}]))//对目标brand相关的非公用源文件进行监控更新编译的loaderconfig.module.rule(module_replace).test(/\.vue$/).pre().use(./prebuild/module_replace).loader(./prebuild/module_replace).end()} }// 本代码模块配合module_replace的loader完成【对目标brand相关的非公用源文件进行监控更新编译】 const chokidar require(chokidar);//监测改动时触发编译 const ignoreFiles []; const brandSign -${brandName}. const watcher chokidar.watch(src/).on(ready, async () {await watcher.close()chokidar.watch(src/, {ignored: ignoreFiles}).on(change, (path, stats) {console.log(changed file, path);let brandSignIndex path.lastIndexOf(brandSign)let endFix path.substring(brandSignIndex brandSign.length)let preFix path.substring(0, brandSignIndex)let destPath preFix . endFixconst destContent fs.readFileSync(destPath, {encoding: utf-8})fs.writeFileSync(destPath, destContent \n)fs.writeFileSync(destPath, destContent)}) }).on(add, (path) {if (path.indexOf(brandSign) 0) ignoreFiles.push(path) })vue.config.js 是项目打包入口在里面使用了三个工具类env.js CopyPlugin.js module_replace.js通过不同的brand读取指定brand文件重写到指定文件实现分渠道打包 三个不可缺少工具类 //env.js文件 module.exports {getApp() {if (process.env.UNI_SCRIPT) {const script process.env.UNI_SCRIPTlet subs script.split(-)if (subs.length 2) return subs[1]}console.error(错误未检测到有效的brand名称)return default},makeDateTimeString(date) {let year date.getFullYear();let month date.getMonth() 1;let day date.getDate();if (month 10) month 0 monthif (day 10) day 0 daylet hour date.getHours();let min date.getMinutes();let sec date.getSeconds()if (min 10) min 0 minif (sec 10) sec 0 secreturn ${year}-${month}-${day} ${hour}:${min}:${sec}},getOS() {let host ioslet arch process.env.MSYSTEM_CARCHif (arch x86_64 || arch x86_32) host winreturn host},getHostCode() {if (process.env.UNI_SCRIPT) {const script process.env.UNI_SCRIPTlet subs script.split(-)if (subs.length 2) return subs[0]}console.error(错误未检测到有效的brand名称)return } }//CopyPlugin.js文件 const fs require(fs); const path require(path); const {getApp, getHostCode } require(./env);class CopyPlugin {log(...param) {console.log(CopyPlugin, ...param)}constructor() {this.log(constructed)}apply(compiler) {compiler.hooks.environment.tap(Manifest, params {let brandName getApp()const platform process.env.UNI_PLATFORMconsole.log(brandName brandName, platform platform)// 构造build.lesslet buildStr brand: brandName ;fs.writeFileSync(src/build.less, buildStr)//复制manifest.jsonlet manifestPath prebuild/${brandName}/manifest.jsonconsole.log(manifestPath,manifestPath)let destManifestPath src/manifest.jsonconst manifestContent fs.readFileSync(manifestPath, {encoding: utf-8});fs.writeFileSync(destManifestPath, manifestContent)})} }module.exports CopyPlugin//module_replace.js 文件 const {getApp} require(./env); const fs require(fs); const tag loader:module-replaceconst brandName getApp() const brandSign -${brandName}.module.exports function(content) {let resourcePath this.resourcePathlet dotIndex resourcePath.lastIndexOf(.)let endFix resourcePath.substring(dotIndex)let srcPath resourcePath.substring(0, dotIndex) - brandName endFixif (srcPath.indexOf(brandSign) 0) return contentif (!fs.existsSync(srcPath)) return contentconsole.log(tag, replace from, srcPath)const newContent fs.readFileSync(srcPath, {encoding: utf-8});return newContent }运行打包时只需要控制台中输入package.json中指定的脚本key值即可 npm run dev:tt-barndA npm run build:ks-barndB 按照上述方法分包后即使实现一个项目多平台多渠道打包如有问题请多指教 资源包在下一篇文章
http://www.w-s-a.com/news/257683/

相关文章:

  • 大连地区做网站自己怎么做电影网站
  • 成都APP,微网站开发手机要访问国外网站如何做
  • 网站app建设用discuz做的手机网站
  • vs 2008网站做安装包公众号登录超时
  • 银川做网站推广wordpress dux会员中心
  • 双辽做网站wordpress怎么写html代码
  • 建站公司哪家好 知道万维科技西安都有哪些公司
  • 设计网站官网入口佛山 品牌设计
  • 专用网站建设wordpress mega
  • 网站建设与优化推广方案内容网站整站下载带数据库后台的方法
  • 做网站PAAS系统外链是什么意思
  • 网页设计专业设计课程googleseo排名公司
  • 网站百度百科那些免费网站可以做国外贸易
  • 做视频的网站有哪些南京计算机培训机构哪个最好
  • ppt做视频 模板下载网站商业街网站建设方案
  • 佛山网站定制开发星光影视园网站建设案例
  • wordpress子站点商务网页设计与制作微课版答案
  • 山东省住房城乡和建设厅网站软件开发主要几个步骤
  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广