js 不用 build 和不用打包是一个意思吗?我理解的 build 就是把 js 压缩成乱码一般~

207 天前
 zzz6519003
1786 次点击
所在节点    JavaScript
11 条回复
Xbathy
207 天前
build 也有可能是把 ts 编译成 js
totoro52
207 天前
不打包 那个 JS 体积几十 M , 根本没法线上用
Kirscheis
207 天前
> "js 不用 build 和不用打包是一个意思吗?"

打包不是一个通用的说法,所以可以是一个意思,取决于上下文

> "我理解的 build 就是把 js 压缩成乱码一般~"

不是一个过程,js 里 Build 主要做几件事:

1. 按 ui 描述语言生成代码
2. 把多文件合并成一个
3. 把高级格式和语法糖转变成各个引擎的原生 js
4. 混淆,也就是你说的变成乱码
5. 压缩
flyqie
207 天前
build 比 pack 来说应该是步骤多的。

ts 转 js 好像很少有人会说叫 pack 。。
XCFOX
207 天前
我理解 build 是把源代码编译成可直接运行的代码,比如把 ts 编译成 js ,把 ESNext 编译成 ES5 ,把 js 编译成字节码。
常用的工具有:
https://github.com/microsoft/TypeScript
https://github.com/babel/babel
https://github.com/swc-project/swc
https://github.com/bytenode/bytenode

打包(bundle | pack)根据不同的项目类型有不同的操作。

对于通用模块项目(npm package),打包需要将源代码编译成 esm 模块以及 cjs 模块,有时还需要输出 .d.ts 类型声明文件。
常用的工具有:
https://github.com/rollup/rollup
https://github.com/evanw/esbuild
https://github.com/unjs/unbuild
https://github.com/egoist/tsup
https://github.com/developit/microbundle

对于应用项目(app),打包需要将源代码以及依赖资源(cs, json, 图片, 甚至 node 本身) 构建成静态文件或者可执行文件,目的是减少 app 体积、方便部署。
常用的工具有:
https://github.com/evanw/esbuild
https://github.com/vitejs/vite
https://github.com/webpack/webpack
https://github.com/web-infra-dev/rspack
https://github.com/nexe/nexe
https://github.com/vercel/pkg
learningman
207 天前
build 指的是 transpile 和 bundle ,minify 是个可选选项,但是为啥不开呢?
janus77
207 天前
有时候前端项目写的不是标准 js ,有可能是 dsl 或者是魔改了的 js ,甚至不是 js 而是其他语言,而 js 又是解释型,所以要尽量变成标准和缩小体积、剔除一些东西
另外如果加上了一些运行时,要做成运行时能识别的格式,也不是标准 js ,这也需要 build 这部分工作
libook
206 天前
build 就是对代码进行处理,包括编译、压缩、合并、打包等步骤,所以 build 可以包含打包,但打包不完全等于 build 。
zzz6519003
206 天前
@libook 你是画漫画的李神吗 hhh
libook
206 天前
@zzz6519003 #9 啊?不是。
你是说我的头像吗?是朋友给我画的。
lete
206 天前
> js 不用 build 和不用打包是一个意思吗?

答: 是

build 构建: 将某些东西转换成某些产物,如 java 项目 build 后 得到 jar 包,前端项目 build 将 ts 、第三方库和你的代码构建到一起形成一个新的 .js 文件。

bundle 在构建过程中,将公共的代码单独提取出来

> 我理解的 build 就是把 js 压缩成乱码一般~

压缩:是将正常代码压缩使得 js 文件体积变小,删除空格、换行、冗余代码(通过代码格式化可以还原源码)

丑化(乱码):也就是你所说的乱码,在压缩的基础上再次压缩,将变量名、函数名、代码结构拧成一团(通过代码格式化无法还原源码)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/982100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX