我刚开始接触npmjs包发布并且最近成功地发布了我的第一个包。但是由于它采用的是ES5风格,所以只能通过“require”方式访问。
const smiley = require('smiley-id');
如何使其可以通过导入语句进行访问,就像这样
import smiley from 'smiley-id';
或/与
import { smileyId } from 'smiley-id';
我刚开始接触npmjs包发布并且最近成功地发布了我的第一个包。但是由于它采用的是ES5风格,所以只能通过“require”方式访问。
const smiley = require('smiley-id');
如何使其可以通过导入语句进行访问,就像这样
import smiley from 'smiley-id';
import { smileyId } from 'smiley-id';
require
是CommonJS模块系统的一部分(也称为cjs模块),而import
和export
用于es2015模块系统(也称为JavaScript模块,es6
模块或esm
模块)。
您可以同时使用import
导入cjs和esm
模块,但不能使用require
导入esm
模块。这意味着在esm
模块(或您将使用TypeScript tsc
编译或使用Babel打包的源文件)中,您可以使用import
直接导入您的软件包。但是,您无法使用命名导入。相反,您必须在导入项目后解构。
如果您想将其作为esm
软件包分发,这也是可能的,并且具有某些优点,其中最重要的与树摇有关。要将其作为esm
模块分发,您需要告诉构建工具输出esm
模块。这对于不同的工具是不同的。例如,对于tsc
,您需要指定--module es6
(有多个目标输出esm
模块)。对于Webpack、Babel和Rollup,操作不同。