Javascript 使NPM包可用于ES6和ECMAScript
我正在用TypeScript制作一个NPM包,我想知道如何使它可用于ES和节点模块 我已使用汇总和一些配置进行了设置: rollup.config.jsJavascript 使NPM包可用于ES6和ECMAScript,javascript,node.js,npm,package.json,Javascript,Node.js,Npm,Package.json,我正在用TypeScript制作一个NPM包,我想知道如何使它可用于ES和节点模块 我已使用汇总和一些配置进行了设置: rollup.config.js 导出默认值{ 输入:“build/kimp.js”,//从TS生成 输出:[ { 文件:“dist/main/kimp.js”, 格式:“es”, 严格:错, 名称:'模块', 横幅:`#!/usr/bin/env node-版权所有2020 Herbie Vine-更新:${new Date()}` }, { 文件:“dist/module/
导出默认值{
输入:“build/kimp.js”,//从TS生成
输出:[
{
文件:“dist/main/kimp.js”,
格式:“es”,
严格:错,
名称:'模块',
横幅:`#!/usr/bin/env node-版权所有2020 Herbie Vine-更新:${new Date()}`
},
{
文件:“dist/module/kimp.js”,
格式:“umd”,
严格:错,
名称:'普通',
横幅:`#!/usr/bin/env node-版权所有2020 Herbie Vine-更新:${new Date()}`
}
],
插件:[
简洁(),
resolve(),
json(),
普通的({
包括:'node_modules/**'
})
],
外部:[
“加密”
]
};
package.json
{
"name": "kimp",
"version": "1.0.0",
"description": "Lightweight ID generator",
"sideEffects": false,
"main": "dist/main/kimp.js", // import() - es6
"module": "dist/module/kimp.js", // require() - node
"scripts": {
"build": "tsc -p ./src/tsconfig.json",
"rollup": "rollup -c"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
"keywords": [...],
"repository": {...},
"author": "Herbie Vine",
"license": "MIT",
"bugs": {...},
"homepage": "https://github.com/herbievine/kimp#readme",
"devDependencies": {...}
}
我尝试在express应用程序中使用它,但出现错误:
const { kimp } = require('kimp');
console.log(kimp)
------
C:\Users\**\kimp-ts\dist\main\kimp.js:3484
export { kimp };
^^^^^^
这来自es模块的内置版本
我是否错误地认为,当节点需要一个包时,它会查看package.json中的模块键。不管怎么说,我已经做了几个小时了,任何帮助都意味着使用您在rollup.config.js中指定的
format:'es'
格式编译到ESModules中的rollup时会有很多欢呼声。Nodejs使用commonjs模块,require应该导入它在那里找不到的commonjs模块,因此会出现错误。Nodejs开始从node版本10开始为ES模块提供实验支持。
如果您的node 10的版本高于node 10,则只需更新package.json中的express server开始脚本,以允许实验模块支持,例如:“开始”:“节点--实验模块服务器.js”
根据您的喜好或要求,其他可行的方法:
@std/esm
编译es模块并将其用作commonjs模块编辑:上面的代码似乎在配置中出现了问题,解决了这个问题,package.json中的main和module条目以另一种方式声明,必须交换条目以正确设置它们。Main实际上应该指向umd,module应该指向es模块。使用您在rollup.config.js中指定的格式:'es'编译到ESModules的rollup。Nodejs使用commonjs模块,require应该导入它在那里找不到的commonjs模块,因此会出现错误。Nodejs开始从node版本10开始为ES模块提供实验支持。 如果您的node 10的版本高于node 10,则只需更新package.json中的express server开始脚本,以允许实验模块支持,例如:
“开始”:“节点--实验模块服务器.js”
根据您的喜好或要求,其他可行的方法:
@std/esm
编译es模块并将其用作commonjs模块编辑:上面的代码似乎在配置中出现了问题,解决了这个问题,package.json中的main和module条目以另一种方式声明,必须交换条目以正确设置它们。Main实际上应该指向umd,module应该指向es modules。我给了你一个要点,但是关于这个主题的更多细节,你也可以参考这篇文章并查看一下那篇文章。但是仍然给我一个错误:/。有没有什么方法可以让我指向我的
dist/module
文件夹,而不是从dist/main
获取代码?@HerbieVine在该标志之后,您是否使用了import{kimp}from'kimp'
?是的,它给了我一个关于在节点中使用模块的错误scripts@HerbieVine您的main和module似乎是以另一种方式声明的,您需要交换条目。Main应该指向umd,module应该指向es modules。更多信息,请参见此。我给了你一个要点,但有关此主题的更多详细信息,你也可以参考这篇文章并查看该帖子。但是仍然给我一个错误:/。有没有什么方法可以让我指向我的dist/module
文件夹,而不是从dist/main
获取代码?@HerbieVine在该标志之后,您是否使用了import{kimp}from'kimp'
?是的,它给了我一个关于在节点中使用模块的错误scripts@HerbieVine您的main和module似乎是以另一种方式声明的,您需要交换条目。Main实际上应该指向umd,module应该指向es模块。有关更多信息,请参见此。