使用Babel和Rollup,开始构建发布你的ES6模块「Modules」

使用Babel和Rollup,开始构建发布你的ES6模块「Modules」
type
status
date
slug
summary
tags
category
icon
password
早在2015年六月,ES2015规范或者叫ES6就正式被ECMA国际协会(Ecma International)批准,成为了新一代的语言标准。2016年四月,Node.js团队发布了号称支持93%的ES6语言特性的Node v6,不过这一切还是由于V8引擎v5.0的发布。
是应该使用最新的语言特性,ES6+的语法,还是应该使用第三方库与polyfills来编写一个JavaScript库?相信这个问题一定困扰着写JavaScript库的你,因为这很难说前者会比后者有更大的优势。私以为,前者能减少代码冗余,让代码更可读,使用更少的抽象,让代码库更容易维护与扩展,提高开发效率等等。
如果你正在开发一个全新的基于Node.js平台的JavaScript库(npm 包), 那基于Node.js v6环境使用最新的特性将是一个很好的选择。你也可以同时提供给Node v5或者更老版本的开发者一个回退版本(fallback),如此一来Node v6的用户也可以正常地使用你的库:
在Node.js v6的环境,代码将是最简洁优雅的。同时也得保证使用Node 0.x, 4.x, 5.x的用户能够导入ES5.1版本的库:
除此以外,强烈推荐将使用ES2015模块语法的版本也放在你的NPM包中。虽然ES2015的模块系统还无法在Node.js或者V8中使用,但Node.js和前端社区早已大量地使用这种规范组织代码,这一切都归功于模块打包工具(module bundlers),如Webpack, Berify, JSPM,Babel等等。
若要使用ES6的方式发布你的包,你项目的目录结构看起来可能会像这样:
在 src 目录里包含了你项目的源代码(当然是ES2015+规范),dist (或者 build )目录则是在你构建工程时动态生成的。通过 dist 目录,你可以发布你的NPM包(package),里面包含了使用Babel和Webapck编译出来的符合CommonJS, ES6,和UMD规范的包(bundle).
在你的 package.json 文件里面会包含这些bundle的引用:
tools/build.js脚本是一种便捷的方式去配置你的编译过程,它看起来可能会像这样:
现在你只需要简单运行 node tools/build (假定你已经在本地装好了Node.js v6),就可以构建你的牛X库了,然后你只需要在 dist 目录下,将代码发布到NPM就OK了。
希望该博可以对你有所帮助,这或许是将你的牛库是以ES6发布在NPM上的最好方式。你也可以在这里看到预配置好的发布NPM包的样板文件:https://github.com/kriasoft/babel-starter-kit
如果你发现有什么遗漏,不清楚,欢迎留言 :)
 
上一篇
编写可维护性CSS之一 | 前言
下一篇
浅谈JavaScript闭包
Loading...