Closed iocdacc closed 4 years ago
推荐按文件引入,每个模块相当于小型 npm 包。
其实我看了按文件引入 里面也存在这样的代码:
crypto = require('crypto');
如果打包的话 webpack一样会polyfill然后放入包内
按文件引入应该不会,你引了哪个模块?crypto 应该只有少量模块会引入。
https://github.com/webpack/webpack/issues/8826 看起来类似 eval('require')('foo')
这种方法可以避免 webpack 去打包,我看能不能优化下。
webpack 会模拟node的crypto 模拟代码高达几百KB 建议在package.json里配置 "module" 与 "browser" 属性来分别指定入口 然后将各自不存在的全局对象去掉
@iocdacc browser 属性已经配置了,你在 webpack 中直接引用 licia 就只会包含那些能在浏览器运行的模块。这里的情况跟这个配置无关,无法用这样来解决,详情见我上面引用的 issue,目前看来可以用eval('require')('foo')
暂时解决。
强行使用 browser 配置就必须将原有的一个代码文件分成两份,同时抽离共用部分,最终变成三份,完全没必要。最好的方法就是 webpack 提供方法就像上边 issue 里想要的,然而目前只能用eval
来替代。
"main": "./node.js",
"browser": "./browser.js"
其实入口已经有两个了。 只需区分一下代码。不过可能会改比较多 确实eval的方法修改比较少
虽然可以通过webpack配置忽略掉node全局对象 :smile: