首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在犀牛中运行ES6和npm

如何在犀牛中运行ES6和npm
EN

Stack Overflow用户
提问于 2019-06-25 14:33:57
回答 1查看 1.2K关注 0票数 3

情景:你有一个JS模块,你自己写的,或者第三方写的。它可能具有npm依赖性。它可以用ES6语法编写,并且可以使用新的ES6 (或7,等等)特性。您想在犀牛上使用它。

问题: Rhino支持require()ing文件,但它不支持。它只支持JavaScript 5语法和特性。

我怎么能在Rhino上运行我的新JS呢?

EN

回答 1

Stack Overflow用户

发布于 2019-06-25 14:33:57

您可以将JS捆绑到一个文件中,并将其转换为JS 5。

解决方案: Babel支持JS语法转换。核心-js填充缺少的ES6功能。Browserify支持将依赖树(包括npm依赖项)捆绑到单个独立文件中。

的细节:说起来容易做起来难。继续阅读一步一步的指南。

  1. 创建一个"bundler“目录。稍后,我们将在其中加入mymodule.js,但让我们暂缓一下。
  2. cd进入您的bundler目录并运行npm init来创建package.json文件。
  3. 将构建命令添加到package.json的“脚本”部分
代码语言:javascript
运行
复制
"build": "browserify mymodule.js -t babelify --standalone mymodule -o bundle.js"

browserify mymodule.js意味着browserify将捆绑mymodule.js及其所有依赖项。-t babelify意味着babel将转换代码,将ES6事务转换为5,--standalone mymodule意味着您的模块通过module.exports导出的东西将被保留。-o bundle.js意味着输出文件将是bundle.js。当您将该文件添加到Rhino时,需要将它重命名为您的模块的名称。

  1. 创建babel配置文件babel.config.js
代码语言:javascript
运行
复制
module.exports = function (api) {
  api.cache(true);

  const presets = [
    [
      "@babel/preset-env",
      {
        useBuiltIns: "entry",
        corejs: 3,
      }
    ],
  ];

  const plugins = [];

  return {
    presets,
    plugins
  };
};

corejs的最新版本目前为3,但如果有更新版本,则使用更新版本。useBuiltins可以改为“使用”,这可能会更好地取决于您的情况。

  1. 安装东西
代码语言:javascript
运行
复制
npm install --global browserify
npm install --save-dev babelify @babel/core @babel/preset-env
npm install core-js

这就完成了你的“邦德勒”本身的设置。您可以保存到目前为止,供将来使用。下面的步骤展示了如何在一个模块上使用这个绑定器.

  1. 将您的模块文件(让我们称之为mymodule.js)及其所有依赖项放入bundler目录。这包括运行npm install ...来安装mymodule.js的npm依赖项。
  2. 加一行
代码语言:javascript
运行
复制
import "core-js/stable";

到mymodule.js的顶端。这将导入所需的填充。为了减少文件大小,您可以导入您的模块(及其依赖项)实际使用的特定JS功能。例如,import "core-js/stable/number/is-nan";导入Number类上的isNaN方法。但是,要知道您具体使用的是什么可能很困难。这就是为什么结合浏览器列表的“使用”选项可能是减肥的最佳方式。有关更多信息,请参见核js

例如,您的文件可能如下所示:

代码语言:javascript
运行
复制
import "core-js/stable";
import mylib from "my-3rd-party-lib";

module.exports = mylib;

如果它只是一个第三方库,您想要在Rhino使用。如果它是您自己编写的模块,那么在顶部的核js导入和底部的module.exports之间会有一堆代码。

  1. 最后,运行您在步骤4中编写的构建命令。
代码语言:javascript
运行
复制
npm run build

现在应该有一个名为bundle.js的文件。您应该能够将该文件复制到Rhino引擎会找到它的地方,并且它应该可以工作。

代码语言:javascript
运行
复制
cp bundle.js /path/to/where/to/place/dist/file/mymodule.js

编码愉快。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56756477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档