swc 编译 es6为commonjs
如果直接写es6后运行node index.js
报错:SyntaxError: Cannot use import statement outside a module js
我们这里使用swc来将es6编译成CommonJS。
以后可以作为一个简单的框架模版使用。
- 安装
pnpm add @swc/cli @swc/core
- 配置.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",
...