Skip to content

Commit

Permalink
refactor: Merge @swc/cli into the monorepo (#11)
Browse files Browse the repository at this point in the history
We also migrate to `lerna` from `turbo` because `@swc/cli` depend on an old version of `@swc/cli`, which is cyclic and not supported by `turbo`.
  • Loading branch information
kdy1 committed Feb 1, 2024
1 parent 2ab0d03 commit 9558c84
Show file tree
Hide file tree
Showing 51 changed files with 7,410 additions and 1,068 deletions.
11 changes: 8 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,18 @@ env:

jobs:
test:
name: Test
name: Test for Node ${{ matrix.node-version }} on ${{ matrix.os }}
timeout-minutes: 15
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
node-version: [16, 18, 20]
os:
- ubuntu-latest
- windows-latest
- macos-latest
node-version: [18, 20]

steps:
- name: Check out code
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,5 @@ dist
.pnp.*

.DS_Store

.nx/cache
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm-lock.yaml
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

Various npm packages for the SWC project.

- [swc-loader](./packages/swc-loader): A webpack loader for swc.
- [@swc/jest](./packages/jest): A jest transformer for swc.
- [swc-loader](./packages/swc-loader): A webpack loader for swc.
- [@swc/cli](./packages/cli): A command line interface for swc.
- [@swc/jest](./packages/jest): A jest transformer for swc.
5 changes: 5 additions & 0 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"version": "0.0.0",
"npmClient": "pnpm"
}
50 changes: 50 additions & 0 deletions nx.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"targetDefaults": {
"prepublishOnly": {
"dependsOn": []
},
"types": {
"dependsOn": []
},
"types:watch": {
"dependsOn": []
},
"build": {
"cache": true,
"dependsOn": ["^build"],
"outputs": ["{projectRoot}/**/*.js"]
},
"build:watch": {
"dependsOn": []
},
"format:src": {
"dependsOn": []
},
"format:examples": {
"dependsOn": []
},
"format": {
"dependsOn": []
},
"test": {
"cache": true,
"dependsOn": ["build"]
},
"test:watch": {
"dependsOn": []
},
"test:coverage": {
"dependsOn": []
},
"postpublish": {
"dependsOn": []
},
"lint": {
"cache": true,
"dependsOn": []
},
"start": {
"dependsOn": []
}
}
}
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
},
"scripts": {
"prepare": "husky install && git config feature.manyFiles true",
"test": "turbo test",
"lint": "turbo lint"
"test": "lerna run test",
"lint": "lerna run lint"
},
"lint-staged": {
"*.toml": [
Expand Down Expand Up @@ -39,8 +39,8 @@
"cross-env": "^7.0.3",
"cspell": "^6.31.1",
"husky": "^8.0.3",
"lerna": "^8.0.2",
"lint-staged": "^13.2.3",
"prettier": "^2",
"turbo": "^1.10.7"
"prettier": "^2"
}
}
22 changes: 22 additions & 0 deletions packages/cli/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Lock files
package-lock.json

# Dependencies
node_modules/

# Testing
coverage
integration-tests

# Build output
lib

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# OS Specific
.DS_Store
3 changes: 3 additions & 0 deletions packages/cli/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"arrowParens": "avoid"
}
13 changes: 13 additions & 0 deletions packages/cli/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"jsc": {
"target": "es2019",
"parser": {
"syntax": "typescript",
"dynamicImport": true
}
},
"module": {
"type": "commonjs"
},
"sourceMaps": true
}
11 changes: 11 additions & 0 deletions packages/cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# swc-cli

See our website [swc-cli][] for more information or the issues associated with this package.

[swc-cli]: https://swc.rs/docs/usage-swc-cli

## @swc/cli@1 beta version is available

Beta version of @swc/cli is now available via `swcx command.
This'll be a default command for @swc/cli@1.
Please give it a try and report any issues at https://github.com/swc-project/swc/issues/4017
4 changes: 4 additions & 0 deletions packages/cli/bin/spack.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env node

process.title = "spack";
require("../lib/spack");
4 changes: 4 additions & 0 deletions packages/cli/bin/swc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env node

process.title = "swc";
require("../lib/swc");
4 changes: 4 additions & 0 deletions packages/cli/bin/swcx.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env node

process.title = "swcx";
require("../lib/swcx");
13 changes: 13 additions & 0 deletions packages/cli/examples/spack-basic/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "spack-example-basic",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@swc/cli": "file:../.."
}
}
11 changes: 11 additions & 0 deletions packages/cli/examples/spack-basic/spack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const { config } = require("@swc/core/spack");

module.exports = config({
entry: {
web: __dirname + "/src/index.ts",
},
output: {
path: __dirname + "/lib",
},
module: {},
});
2 changes: 2 additions & 0 deletions packages/cli/examples/spack-basic/src/common.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const A = "foo";
export const B = "bar";
3 changes: 3 additions & 0 deletions packages/cli/examples/spack-basic/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { B } from "./common";

console.log(B);
14 changes: 14 additions & 0 deletions packages/cli/examples/spack-multiple-entry/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "spack-example-multiple-entry",
"private": true,
"version": "1.0.0",
"main": "lib/index.js",
"scripts": {},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@swc/cli": "file:../.."
}
}
12 changes: 12 additions & 0 deletions packages/cli/examples/spack-multiple-entry/spack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const { config } = require("@swc/core/spack");

module.exports = config({
entry: {
web: __dirname + "/src/web.ts",
android: __dirname + "/src/android.ts",
},
output: {
path: __dirname + "/lib",
},
module: {},
});
1 change: 1 addition & 0 deletions packages/cli/examples/spack-multiple-entry/src/android.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import "./common";
1 change: 1 addition & 0 deletions packages/cli/examples/spack-multiple-entry/src/common.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
console.log("initializing");
1 change: 1 addition & 0 deletions packages/cli/examples/spack-multiple-entry/src/web.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import "./common";
14 changes: 14 additions & 0 deletions packages/cli/examples/spack-node-modules/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "spack-example-node-modules",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@swc/cli": "file:../..",
"path": "^0.12.7"
}
}
11 changes: 11 additions & 0 deletions packages/cli/examples/spack-node-modules/spack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const { config } = require("@swc/core/spack");

module.exports = config({
entry: {
web: __dirname + "/src/index.ts",
},
output: {
path: __dirname + "/lib",
},
module: {},
});
3 changes: 3 additions & 0 deletions packages/cli/examples/spack-node-modules/src/common.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { join } from "path";

export const A = join(__dirname, "src");
3 changes: 3 additions & 0 deletions packages/cli/examples/spack-node-modules/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { A } from "./common";

console.log(A);
15 changes: 15 additions & 0 deletions packages/cli/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const enableCoverage = process.env.JEST_COVERAGE === "true";

module.exports = enableCoverage
? {
// provides the most accurate coverage results
preset: "ts-jest",
roots: ["src"],
}
: {
roots: ["src"],
// provides fastest test transforms
transform: {
"^.+\\.(t|j)sx?$": ["@swc/jest"],
},
};
83 changes: 83 additions & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
"name": "@swc/cli",
"version": "0.3.5",
"description": "CLI for the swc project",
"main": "lib/swc/index.js",
"scripts": {
"prepublishOnly": "pnpm build && pnpm test && pnpm types",
"types": "tsc",
"types:watch": "tsc --watch",
"build": "swc src -d lib --ignore '**/*.test.ts' --ignore '**/__mocks__/**'",
"build:watch": "swc src -d lib --watch --ignore '**/*.test.ts' --ignore '**/__mocks__/**'",
"format:src": "prettier --write src",
"format:examples": "prettier --write examples",
"format": "pnpm format:src && pnpm format:examples",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "JEST_COVERAGE=true jest --coverage"
},
"repository": {
"type": "git",
"url": "git+https://github.com/node ./bin/swc-project/pkgs.git"
},
"keywords": [
"swc",
"cli",
"babel",
"es6",
"transpile",
"transpiler",
"compiler",
"javascript"
],
"author": "강동윤 <kdy1997.dev@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/swc-project/pkgs/issues"
},
"homepage": "https://github.com/swc-project/pkgs",
"engines": {
"node": ">= 16.14.0"
},
"bin": {
"swc": "./bin/swc.js",
"swcx": "./bin/swcx.js",
"spack": "./bin/spack.js"
},
"dependencies": {
"@mole-inc/bin-wrapper": "^8.0.1",
"commander": "^7.1.0",
"fast-glob": "^3.2.5",
"minimatch": "^9.0.3",
"piscina": "^4.3.0",
"semver": "^7.3.8",
"slash": "3.0.0",
"source-map": "^0.7.3"
},
"devDependencies": {
"@swc/cli": "^0.1.43",
"@swc/core": "^1.2.66",
"@swc/jest": "^0.1.2",
"@types/jest": "^29.5.0",
"@types/node": "^20.11.5",
"@types/semver": "^7.3.13",
"chokidar": "^3.5.1",
"deepmerge": "^4.2.2",
"jest": "^29.5.0",
"ts-jest": "^29.0.5",
"typescript": "~4.3.2"
},
"peerDependencies": {
"@swc/core": "^1.2.66",
"chokidar": "^3.5.1"
},
"peerDependenciesMeta": {
"chokidar": {
"optional": true
}
},
"files": [
"bin",
"lib"
]
}

0 comments on commit 9558c84

Please sign in to comment.