Giter VIP home page Giter VIP logo

Comments (23)

tank0317 avatar tank0317 commented on June 6, 2024 5

发现一处笔误:import { Dialog } form 'cube-ui'。"from"拼错了~

from ddfe-blog.

tank0317 avatar tank0317 commented on June 6, 2024 4

@linrui1994 我的理解是以前的项目是使用webpack 1开发的,而webpack 1中加载包时会对应到pakage.json的"main"字段去解析。参考http://devdocs.io/webpack~1/resolving
webpack1-resolving

在webpack 2+,加载包时会优先到对应的”module"字段去解析。参考https://doc.webpack-china.org/configuration/resolve/#resolve-mainfields
webpack2-resolving

因此为了兼容以前使用webpack 1的老项目,会在npm包的package.json(比如cube-ui组件包)中提供两个入口。

from ddfe-blog.

ustbhuangyi avatar ustbhuangyi commented on June 6, 2024 2

每个包需要管理自己的后编译依赖,相当于建立一套后编译的生态,目前来看适合自己团队内部去维护这套生态。

from ddfe-blog.

Jenny-O avatar Jenny-O commented on June 6, 2024

666,感谢分享干货,已推荐到 SegmentFault 头条 (๑•̀ㅂ•́)و✧
链接如下:https://segmentfault.com/p/1210000011520990

from ddfe-blog.

venoral avatar venoral commented on June 6, 2024

感谢分享

from ddfe-blog.

Jmingzi avatar Jmingzi commented on June 6, 2024

感谢分享。

from ddfe-blog.

fenggu avatar fenggu commented on June 6, 2024

感谢分享。

from ddfe-blog.

fantianyu25 avatar fantianyu25 commented on June 6, 2024

感谢分享,先收藏吧

from ddfe-blog.

jiangtao avatar jiangtao commented on June 6, 2024

编译优化的话可以考虑 DLL,可以缩短编译时间。

from ddfe-blog.

steinslin avatar steinslin commented on June 6, 2024

入口之争这一部分没读懂,main和module字段的区别,比如require('a')读的是main字段,import 'a'读的是module字段吗? 谁能告诉我,我哪里错了?

from ddfe-blog.

steinslin avatar steinslin commented on June 6, 2024

@tank0317 原来是这样,这样就清楚了,我原来的理解是错的,还是文档没看彻底

from ddfe-blog.

sudazx avatar sudazx commented on June 6, 2024

灰常好,讲解的很赞~~

from ddfe-blog.

ishowman avatar ishowman commented on June 6, 2024

这些方案在webpack3上可行吗?同样的代码,之前试过用webpack2和webpack3打包,打包后的app.js和vendor.js,3比2的小很多了

from ddfe-blog.

dolymood avatar dolymood commented on June 6, 2024

3 支持的,4的话目前还没测验,很快会考虑4的一些兼容

from ddfe-blog.

easonyq avatar easonyq commented on June 6, 2024

想请教大神一个问题:

在后编译这块,按照您的解释,如果项目依赖 A,就需要在项目的 package.json 中写入 compileDependencies: ["A"],这个OK。

但如果模块 A 还依赖 C 和 D,还要求在 A 里面写 compileDependency,这个要求是不是有些勉强?

例如我依赖了 lodash,我如何控制 lodashpackage.json ?还是说您这套做法只适用于自己发布的 npm 包?

谢谢大神

from ddfe-blog.

Leo-lin214 avatar Leo-lin214 commented on June 6, 2024

目前使用babel 6和webpack 4测试后,发现无法处理ES6的class经babel编译后会出现IIFE情况(即副作用函数问题)

使用该插件,tree shaking依然无法去掉没有调用到的class声明状况

from ddfe-blog.

zimtsui avatar zimtsui commented on June 6, 2024

我记得好像在 vue-cli 3 中,对于依赖包默认是不编译直接打包。所以后编译实际上在 vue-cli 3 中好像已经没什么用了。

详见

from ddfe-blog.

dolymood avatar dolymood commented on June 6, 2024

@zimtsui 默认nodemodules 都是不编译的,所以需要编译,这才是后编译。

后编译插件现在已经1.0版本了。

除了兼容上述的手工指定 compileDependencies 外,包自身声明的 postCompile 字段的优先级最高,甚至还可以指定文件目录,这部分借助于 minimatch 做的匹配。

如果从广度来看,如果有很多依赖包,借助于工具,以及自身声明就可以满足需求了;且这种方案不仅可以应用在 vue 生态中,React也一样。

from ddfe-blog.

zimtsui avatar zimtsui commented on June 6, 2024

@dolymood 谢谢指出,我之前理解错了后编译的目的。

from ddfe-blog.

wen911119 avatar wen911119 commented on June 6, 2024

@dolymood 有个疑问,为什么不直接去掉
include: [path.resolve(__dirname, 'src')]
让webpack对所有引用的包都做处理。这样就可以一劳永逸的解决源码编译的问题了啊,唯一的坏处不就是增加了点打包时间吗,这个一般感觉不到吧。
我是发现preact-cli生成的项目就是可以天然支持源码后编译的,把它的webpack配置打印出来看了下,就是没有include: [path.resolve(__dirname, 'src')]

from ddfe-blog.

flyyang avatar flyyang commented on June 6, 2024

比我们做的深入,赞一个

from ddfe-blog.

hurrytospring avatar hurrytospring commented on June 6, 2024

有点意思,最近遇到了同样的问题。

from ddfe-blog.

FIGHTING-TOP avatar FIGHTING-TOP commented on June 6, 2024

编译优化,推荐使用DllPlugin, 提升构建的速度。

from ddfe-blog.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.