Nodejs ncc:类似于 gcc 的 Node.js 一键编译打包工具

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs ncc:类似于 gcc 的 Node.js 一键编译打包工具

ncc

GitHub: https://github.com/zeit/ncc
文章链接: https://zeit.co/blog/ncc

ncc 是一个简单的 CLI 工具,可以一键把一个 Node.js 项目编译打包成单个 JS 文件。

安装

npm i -g [@zeit](/user/zeit)/ncc

使用

例如我们有一个项目引入了 chalk 包,首先安装 NPM 依赖:

cd myapp
npm i chalk

index.js 如下:

const chalk = require("chalk");
console.log(chalk.blue.bgRed.bold("Hello world!"));

那么就可以直接用 ncc build

ncc build index.js

即会输出一个 dist/index.js 文件(打包+压缩):


19 回复

补充:ncc 受启发于 Go 语言的 build 功能(导出一个静态 ELF 可执行文件),目的也是输出一个 包含了所有依赖的独立可执行脚本

ncc 本身基于 webpack 开发,项目也是由 ZEIT、webpack 作者( Tobias Koppers )、rollup 作者( Guy Bedford )合作贡献而成。


请问前端项目适用么?

我靠,这个牛逼啊

第 1000 个 star,哈哈

当然前端可能会有其他更可定制化的脚手架工作流程(多个 entry points、watch 等等)。
ncc 的好处在于单个命令,一次性打包发布(相比发布源代码 + npm install 带来的巨大 node_modules )。

举例来说,如果在服务器上部署一个 Apollo/Express Server,传统的方式是拷贝源代码 + npm install + 运行 node,可能带来数十到上百 MB 的空间占用。另一个选择是先用 ncc 打包,然后在服务器端直接执行 node build.js 。整个空间占用不到 1MB (因为去除+压缩了 node_modules 里面无用的依赖)。额外带来的好处也有启动速度提升(例如 require 依然有可观的 file IO 开销)。

有道理,好东西

Only support Node.js (soon, optionally with TypeScript) codebases

前端应该不适用吧

毕竟语法都是 ES,而且现代前端开发环境就是 Node.js ,仅是打包 NPM 依赖的话不应该有 “前端” 和 “ Node.js ” 的分别。

另外 ncc 的 integration tests 里面也有 Vue/React 等等: https://github.com/zeit/ncc/blob/master/test/integration/vue.js (虽然用了 render to string 方便 test )。

起码是好事

感觉很有用啊

可以顺便混淆吗?或者打包成单个 js 后自行 uglify 仍然能运行吗?

ncc 已经默认打开了 minify (再自行 uglify 也可以但没有必要了)。

6666 战略性 mark

还行,zeit 牛逼

收藏收藏,很有创意的工具。支持一下

牛,我发现我也用了 ncc ,vercel/ncc ,本来以为不是同一个东西,居然是同一个。

回复帖子:Nodejs ncc——类似于gcc的Node.js一键编译打包工具

NCC(Node.js Compiler Collection)确实是一个类似于gcc的Node.js一键编译打包工具,它能够极大地简化Node.js项目的部署和分发。以下是对NCC的详细介绍和使用示例:

NCC介绍

NCC是一个基于WebAssembly的编译器集合,它可以将Node.js项目编译成单个JavaScript文件。这个特性使得项目的分发和部署变得非常简单,因为用户只需要一个文件就可以运行整个应用。

使用示例

  1. 安装NCC

    你可以通过NPM全局安装NCC:

    npm install -g [@vercel](/user/vercel)/ncc
    
  2. 编译项目

    假设你有一个Node.js项目,入口文件为index.js。你可以使用以下命令将项目编译成一个单一的JavaScript文件:

    ncc build index.js -o dist
    

    这条命令会将index.js编译成一个文件,并输出到dist目录下。

优点

  • 简化部署:只需一个文件即可运行整个应用。
  • 提高性能:减少了依赖项的安装和加载时间。
  • 跨平台:生成的JavaScript文件可以在任何支持Node.js的环境中运行。

总之,NCC是一个强大且易用的Node.js编译打包工具,它能够帮助开发者更高效地分发和部署Node.js项目。

回到顶部