{"id":13601634,"url":"https://github.com/F-loat/mpvue-entry","last_synced_at":"2025-04-11T04:31:17.047Z","repository":{"id":31268197,"uuid":"127411040","full_name":"F-loat/mpvue-entry","owner":"F-loat","description":"⛓️ 集中式页面配置，统一构建入口，支持新增页面热更新","archived":false,"fork":false,"pushed_at":"2022-12-03T09:10:13.000Z","size":918,"stargazers_count":353,"open_issues_count":22,"forks_count":56,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-10-30T05:56:07.073Z","etag":null,"topics":["entry","mpvue","webpack"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/F-loat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-30T09:43:27.000Z","updated_at":"2024-03-06T06:32:46.000Z","dependencies_parsed_at":"2023-01-14T18:40:57.031Z","dependency_job_id":null,"html_url":"https://github.com/F-loat/mpvue-entry","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F-loat%2Fmpvue-entry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F-loat%2Fmpvue-entry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F-loat%2Fmpvue-entry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F-loat%2Fmpvue-entry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/F-loat","download_url":"https://codeload.github.com/F-loat/mpvue-entry/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223281639,"owners_count":17119116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["entry","mpvue","webpack"],"created_at":"2024-08-01T18:01:05.498Z","updated_at":"2024-11-07T04:31:18.530Z","avatar_url":"https://github.com/F-loat.png","language":"JavaScript","funding_links":[],"categories":["工具"],"sub_categories":["目录"],"readme":"# mpvue-entry\n\n\u003e 自动生成构建入口，避免编写大量重复的 main.js 文件\n\n[![npm package](https://img.shields.io/npm/v/mpvue-entry.svg)](https://npmjs.org/package/mpvue-entry)\n[![npm downloads](https://img.shields.io/npm/dm/mpvue-entry.svg)](https://npmjs.org/package/mpvue-entry)\n[![build status](https://travis-ci.org/F-loat/mpvue-entry.svg?branch=master)](https://travis-ci.org/F-loat/mpvue-entry)\n[![codecov](https://codecov.io/gh/F-loat/mpvue-entry/branch/master/graph/badge.svg)](https://codecov.io/gh/F-loat/mpvue-entry/branch/master)\n[![codebeat badge](https://codebeat.co/badges/c51b57e4-c809-404e-a825-4271a8e2e01e)](https://codebeat.co/projects/github-com-f-loat-mpvue-entry-master)\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/F-loat/mpvue-entry/blob/master/LICENSE)\n\n## 目录结构\n\n``` txt\n├─build\n├─config\n├─src\n│ ├─components\n│ ├─pages\n│ │  └─news\n│ │     │─list.vue\n│ │     └─detail.vue\n│ ├─App.vue\n│ ├─app.json\n│ └─main.js\n└─package.json\n```\n\n## Quickstart\n\n\u003e https://github.com/F-loat/mpvue-quickstart\n\n``` bash\nvue init F-loat/mpvue-quickstart my-project\n```\n\n## 安装\n\n``` bash\nnpm i mpvue-entry@next -D\n```\n\n## 使用\n\n\u003e v2.0 版本仅支持 mpvue-loader@^1.1.0，兼容 megalo\n\n``` js\n// webpack.base.conf.js\nconst MpvueEntry = require('mpvue-entry')\n\nmodule.exports = {\n  entry: MpvueEntry.getEntry('src/app.json'),\n  ...\n  plugins: [\n    new MpvueEntry(),\n    ...\n  ]\n}\n```\n\n``` js\n// app.json - 支持 js 格式，兼容微信小程序官方配置规范\n{\n  \"pages\": [\n    {\n      \"path\": \"pages/news/list\", // 页面路径，同时是 vue 文件相对于 src 的路径，必填\n      \"config\": { // 页面配置，即 page.json 的内容，可选\n        \"navigationBarTitleText\": \"文章列表\",\n        \"enablePullDownRefresh\": true\n      }\n    }\n  ],\n  \"window\": {}\n}\n```\n\n## 参数\n\n* paths: `String/Object`\n\n\u003e paths 为 `String` 类型时作为 config 的值，为绝对路径或相对于项目根目录的相对路径\n\n| property | default | describe |\n| :-: | :-: | :-: |\n| config | 'src/app.json' | 项目配置文件 |\n| main | 'src/main.js' | 主入口文件，作为模板 |\n| template | 'src/main.js' | 入口模板文件，优先级较高 |\n| entry | 'mpvue-entry/dist/' | 各页面入口文件目录 |\n\n``` js\n// 示例\nMpvueEntry.getEntry({\n  config: 'src/app.js',\n  main: 'src/index.js'\n})\n```\n\n* pages `[String/Object]`\n\n\u003e pages 元素为 `String` 类型时作为 path 的值，为绝对路径或相对于项目根目录的相对路径\n\n| property | type | default | describe |\n| :-: | :-: | :-: | :-: |\n| path | String | - | 文件路径 |\n| config | Object | {} | 页面配置 |\n| route |String | - | 页面路由 |\n| native | Boolean | false | 原生页面 |\n| subPackage | Boolean | false | [分包加载](#quickstart) |\n| root | String | - | 分包根路径 |\n| name | String | `root` | 分包别名 |\n| independent | Boolean | false | 独立分包 |\n\n``` js\n// 示例\n[\n  'pages/index',\n  {\n    path: 'pages/news/list',\n    config: {\n      navigationBarTitleText: '页面标题'\n    },\n    route: 'pages/news/list/main'\n  },\n  {\n    path: 'package/news/detail',\n    root: 'package/news',\n    subPackage: true,\n    independent: true\n  }\n]\n```\n\n## Tips\n\n* 首页为 `pages` 数组的第一项\n\n* 分包配置兼容微信小程序官方写法\n\n* paths 的[相关配置](#参数)均可在项目 package.json 的 entryOptions 中覆盖\n\n* 可通过以下形式的注释指定 `main.js` 特有代码\n\n``` js\nconsole.log('hello world') // app-only\n\n/* app-only-begin */\nconsole.log('happy')\nconsole.log('coding')\n/* app-only-end */\n```\n\n* 官方模板生成的项目请务必去除以下配置\n\n``` js\n// webpack.base.conf.js\nmodule.exports = {\n  plugins: [\n    new CopyWebpackPlugin([{\n      from: '**/*.json',\n      to: ''\n    }], {\n      context: 'src/'\n    }),\n    ...\n  ]\n}\n```\n\n* megalo 官方已对打包入口做了类似的优化，如无迁移需求可直接采用[官方方案](https://github.com/kaola-fed/megalo-aot/pull/22)\n\n## Thanks\n\n* [webpack-watched-glob-entries-plugin](https://github.com/Milanzor/webpack-watched-glob-entries-plugin)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FF-loat%2Fmpvue-entry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FF-loat%2Fmpvue-entry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FF-loat%2Fmpvue-entry/lists"}