Closed JohannLai closed 5 years ago
将每个文件作为 entry 应该会有一个问题就是新增文件后需要重启 webpack,所以我采用了自动根据 app.json 去获取整个项目中的文件的依赖关系。
我是通过在 loader 解析文件时,将此文件最后的emit的路径通过一些 hack 的方式保存在文件中,最后在使用 webpack 内置的压缩后,将之前保存的文件信息拆分成一个个的小文件,所以我是综合了 loader 和 plugin 的。
你上面说的那个例子,应该只需要在 loader 中判断下文件类型,如果是 model.js,只需要修改下文件 emit 的路径并保存在 loader 中,最后拆分的事就交给 plugin。
webpack 的思路是一个 entry 打包成一个文件,所以一般的思路都是一个文件作为一个 entry;而用我的方法会显的比较 hack,而且在作文件拆分时用了正则表达式,而不是语法树,所以不排除会出问题,但这样做确实也蛮方便就是。
@qiu8310 感谢大神解惑~ 确实是一个很新奇的想法💡 ,学习了
最近在研究qiu大神的 minapp 项目关于 webpakc loader 的部分,是真的强,loader 写的特别好,很巧妙地用 入口为 app.json 为入口,遍历找出需要的的文件进行构建。 我在这里也看到一些人的其他做法,例如把所有小程序的文件作为 webpack 的 entry,然后直接把这些文件传递给相应的 loader 处理如 wxml-loader,发现这样好像也能达到遍历构建所有文件的入口,想问问 qiu 大神,考虑通过 appjson 找出需要构建的文件目的是在解决什么问题呢?
另外,我最近有个想法,是基于 umi 来做这个小程序的,遇到一个问题,想咨询一些 qiu 大神这个应该怎么写,每个pages底下会有个 model.js 文件, 然后我需要在 appjs 中require 这个 model 文件,但是受限于分包加载不能 require,所以我只能在项目根目录起一个 models 的文件夹。
最终写达到的效果是,在下图的文件目录写 model.js ,然后,在构建的时候挪到 根目录 的 models 文件夹,然后再在 appjs 中引用,请问qiu大神,这个应该写在 loader 里面还是 plugin 里面呢?
盼复,感谢~🙏