自学内容网 自学内容网

swc 编译 es6为commonjs

如果直接写es6后运行node index.js
报错:SyntaxError: Cannot use import statement outside a module js

我们这里使用swc来将es6编译成CommonJS。

以后可以作为一个简单的框架模版使用。

  1. 安装

pnpm add @swc/cli @swc/core

  1. 配置.swcrc
{
    "$schema": "https://swc.rs/schema.json",
    "jsc": {
        "parser": {
            "syntax": "ecmascript",
            "jsx": false,
            "decorators": true
        },
        "transform": {
            "legacyDecorator": true
        },
        "target": "es2021",
        "loose": false
    },
    "module": {
        "type": "commonjs",
        "ignoreDynamic": true
    },
    "isModule": true,
    "minify": false,
    "sourceMaps": true
}

package.json

{
  "name": "workers",
  "version": "0.0.1",
  "description": "",
  "main": "cjs/index.js",
  "module": "src/index.js",
  "react-native": "src/index.js",
  "private": true,
  "exports": {
      ".": {
          "import": "./src/index.js",
          "require": "./cjs/index.js"
      },
      "./*": {
          "import": "./src/*.js",
          "require": "./cjs/*.js"
      },
      "./**/*": {
          "import": "./src/**/*.js",
          "require": "./cjs/**/*.js"
      }
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "scripts": {
      "prettier": "prettier --write .",
      "clean": "shx rm -rf cjs coverage .nyc_output",
      "build": "pnpm clean && swc ./workers -d ./cjs --strip-leading-paths",
      "dev": "nodemon",
      "start": "pnpm build && node --enable-source-maps ./cjs/index.js"
  },
  "nyc": {
      "exclude": [
          ".*",
          "cjs",
          "test",
          "**/*.spec.js"
      ]
  },
  "devDependencies": {
    "@swc/cli": "^0.4.0",
    "@swc/core": "^1.7.26",
    "shx": "^0.3.4"
  },
  "prettier": {
      "quoteProps": "consistent",
      "printWidth": 120,
      "singleQuote": true,
      "trailingComma": "es5",
      "tabWidth": 4,
      "useTabs": false
  }
}

nodemon.json

{
    "watch": ["./src", "./conf"],
    "ignore": ["./node_modules", "./deps/*"],
    "ext": "js yaml",
    "exec": "pnpm build && node --enable-source-maps ./cjs/index.js"
}

swc的其他配置

添加重新编译配置

npm i -D chokidar

...
"build": "pnpm clean && swc ./workers -d ./cjs -d --strip-leading-paths",
...

原文地址:https://blog.csdn.net/junjiahuang/article/details/142174564

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!