babel build缺少要求

时间:2020-07-27 21:42:46

标签: javascript babeljs

我刚刚升级到babel v7building我的项目,我看到它只是构建我的index.js而不是该文件中使用的任何导入。

我希望该构建包含所有导入,以便可以使用构建的文件。

.babelrc

{
  "presets": [
    [
      "@babel/preset-env", {
      "targets": {
        "node": "current"
      }
    }]
  ]
}

index.js

import FetchApi from './utils/fetch'

export const aFunc = function () {FetchApi()}    
export default aFunc

build.js

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.aFunc = void 0;

var _fetch = _interopRequireDefault(require("./utils/fetch"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

const aFunc = function () {
  (0, _fetch.default)();
};

exports.aFunc = aFunc;
var _default = aFunc;
exports.default = _default;

有问题的行在这里: var _fetch = _interopRequireDefault(require("./utils/fetch"));

1 个答案:

答案 0 :(得分:0)

babel <src-file>将仅转换单个源文件。您可以通过指定目录而不是单个源文件babel <src-dir> -d build transpile all source files in a directory。这将生成一堆已编译的文件,并且您的require语句将解析为已编译的模块。

如果您希望将所有源文件合并到一个输出文件中,则还可以使用babel的--out-file标志,但它可能无法满足您的要求(仅cat个已转储的文件到单个输出文件中;您的require语句将仍然存在,仍将指向外部文件,并且在运行时失败。您可能需要像webpack / rollup / parcel这样的打包程序才能将require语句转换为内联模块,从而使您可以生成单个,自包含的,可编译的构建工件。

相关问题