Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cli): 支持自定义项目入口文件 #2507

Closed
wants to merge 3,789 commits into from

Conversation

deepcoldy
Copy link

由于项目需要自定义多入口启动,所以需要taro-cli支持 通过配置自定义入口文件的名称。

luckyadam and others added 30 commits January 28, 2019 23:02
@deepcoldy
Copy link
Author

@js-newbee

有一种场景是做OEM小程序。例如要给不同第三方定制开发微信小程序,只有个别页面不一样。
如果能支持指定配置文件和指定入口,就能非常低成本实现需求。

@deepcoldy
Copy link
Author

@js-newbee 你说的对,我看一下其他端的实现

@js-newbee
Copy link
Contributor

@js-newbee

有一种场景是做OEM小程序。例如要给不同第三方定制开发微信小程序,只有个别页面不一样。
如果能支持指定配置文件和指定入口,就能非常低成本实现需求。

针对这种场景的话,其实可以用 defineConstants 的

// config
defineConstants: {
    PAGES: JSON.stringify(['pages/a', 'page/b'])
}

// app.js
config = {
    pages: PAGES
}

指定 config 路径,感觉好像不是很有必要哈,因为配置项差别不会太大,借助环境变量进行覆盖就好了

@deepcoldy
Copy link
Author

@js-newbee 看了一下是支持多平台的,之前没注意alipay、tt小程序都走的weapp的逻辑。

另外,指定config意义在于:
使用npm run build:weapp -- --watch --config 'config/other.js'
在other里面指定新的entryName和outputRoot,就可以在不同文件夹,根据配置,同时打包出多个小程序一起开发调试。
现在的开发模式只支持,同时开发不同平台。这样改完之后可以支持同时开发一个平台的多个应用。

@js-newbee
Copy link
Contributor

@deepcoldy 可以这样来控制:

npm scripts 这样设置(传入环境变量):

"build:weapp:p1": "cross-env PROJECT=p1 npm run build:weapp",
"build:weapp:p2": "cross-env PROJECT=p2 npm run build:weapp",
...

在 config/index.js 中这样设置:

const project = process.env.PROJECT

const config = {
    entryName: project,
    outputRoot: `dist.${project}`
}

又或者是 config/index.js 这样导出,也可以实现使用指定的 config 文件。

module.exports = function (merge) {
  if (process.env.PROJECT === 'p1') {
    return merge({}, config, require('./p1'))
  }
  return ...
}

通过环境变量就可以方便的实现自定义了。因为你的 config/other.js 也不太会去完整 copy 一份 index.js 出来改的,正常也就是 merge 的形式,那其实用环境变量就可以实现了。

个人感觉不是很有必要加这个配置项,不过也看开发团队怎么看哈

@deepcoldy
Copy link
Author

@js-newbee 👍明白了,那我把支持命令行指定config文件路径这个commit撤回。
只加一个entryName完全够用了。

@luckyadam
Copy link
Member

代码里有一些硬编码 app 的地方,也可以改了~

@deepcoldy
Copy link
Author

@luckyadam 没太明白说的是哪些地方,我只找到了一处,麻烦举个例子?

@tourze
Copy link
Contributor

tourze commented May 7, 2019

请问这个有计划合并吗?现在app.js中的config没办法通过配置来生成,挺麻烦的。

@Chastrlove
Copy link

这个PR有计划合并吗,迫切需要自定义入口的功能!!!

@ZakaryCode ZakaryCode closed this Apr 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet