wasm: Automatic deployment (#1084)

wasm:
 - Add auto deployment.
This commit is contained in:
강동윤 2020-09-19 02:07:28 +09:00 committed by GitHub
parent fa756a1b48
commit 7905b0dcf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 83 additions and 39 deletions

View File

@ -4,7 +4,7 @@ on: [push, pull_request]
env:
CARGO_INCREMENTAL: 0
CI: '1'
CI: "1"
jobs:
integration-test:
@ -15,7 +15,7 @@ jobs:
- uses: actions/setup-node@v2-beta
with:
node-version: '12'
node-version: "12"
- name: Cache
uses: actions/cache@v2
@ -37,7 +37,7 @@ jobs:
npm i
export PATH="$PATH:$HOME/npm/bin"
npm run build
npm run build:dev
npm i -g @swc/cli
npm link

View File

@ -1,4 +1,4 @@
name: Publish
name: Publish (node)
on:
create:
@ -7,8 +7,8 @@ on:
env:
CARGO_INCREMENTAL: 0
CI: '1'
DEBUG: 'napi:*'
CI: "1"
DEBUG: "napi:*"
jobs:
build:
@ -63,7 +63,7 @@ jobs:
shell: bash
run: npm run build
env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
MACOSX_DEPLOYMENT_TARGET: "10.13"
- name: Upload artifact
uses: actions/upload-artifact@v2
@ -97,10 +97,10 @@ jobs:
run: |
docker pull docker.pkg.github.com/napi-rs/napi-rs/rust-nodejs-alpine:lts
docker tag docker.pkg.github.com/napi-rs/napi-rs/rust-nodejs-alpine:lts builder
- name: 'Install dependencies'
- name: "Install dependencies"
run: yarn install --frozen-lockfile --registry https://registry.npmjs.org
- name: 'Build'
- name: "Build"
run: |
docker run --rm -v $(pwd)/.cargo:/root/.cargo -v $(pwd):/node-rs -w /node-rs builder sh -c "cargo build -p node --release"
docker run --rm -v $(pwd)/.cargo:/root/.cargo -v $(pwd):/node-rs -w /node-rs builder sh -c "./node_modules/.bin/napi build --platform --cargo-name node --musl --release -c ./package.json ./scripts/npm"

47
.github/workflows/publish-wasm.yml vendored Normal file
View File

@ -0,0 +1,47 @@
name: Publish (wasm)
env:
CARGO_INCREMENTAL: 0
CI: "1"
on:
create:
tags:
- v*
jobs:
build:
name: Build - wasm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v1
with:
node-version: 12
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/
**/target/
key: ${{ runner.os }}-publish-integration
- name: Install node dependencies
run: npm i
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Build
run: (cd wasm && wasm-pack build --release --scope=swc --target nodejs)
- name: Publish
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
(cd wasm/pkg && npm publish)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@ -4,7 +4,7 @@
#![deny(trivial_casts)]
#![deny(trivial_numeric_casts)]
#![deny(unreachable_pub)]
#![deny(variant_size_differences)]
// #![deny(variant_size_differences)]
pub use self::{
class::{

View File

@ -1,26 +1,23 @@
[package]
name = "wasm"
version = "0.2.0"
authors = ["강동윤 <kdy1997.dev@gmail.com>"]
license = "Apache-2.0/MIT"
repository = "https://github.com/swc-project/swc.git"
description = "wasm module for swc"
edition = "2018"
license = "Apache-2.0/MIT"
name = "wasm"
repository = "https://github.com/swc-project/swc.git"
version = "1.2.30"
[lib]
crate-type = ["cdylib"]
[dependencies]
swc = { path = "../" }
swc_common = { path = "../common" }
swc_ecmascript = { path = "../ecmascript" }
serde_json = "1"
console_error_panic_hook = "0.1.6"
once_cell = "1.3.1"
path-clean = "0.1"
serde = { version = "1", features = ["derive"] }
serde = {version = "1", features = ["derive"]}
serde_json = "1"
swc = {path = "../"}
swc_common = {path = "../common"}
swc_ecmascript = {path = "../ecmascript"}
wasm-bindgen = {version = "0.2", features = ["serde-serialize"]}
wasm-bindgen-futures = "0.4.8"
console_error_panic_hook = "0.1.6"
[dependencies.wasm-bindgen]
version = "0.2"
features = ["serde-serialize"]

View File

@ -9,7 +9,7 @@ use swc::{
Compiler,
};
use swc_common::{
errors::{EmitterWriter, Handler, HandlerFlags, SourceMapperDyn},
errors::{DiagnosticBuilder, Emitter, Handler, SourceMapperDyn},
FileName, FilePathMapping, SourceMap,
};
use swc_ecmascript::ast::Program;
@ -98,26 +98,26 @@ fn codemap() -> Arc<SourceMap> {
}
/// Creates a new handler which emits to returned buffer.
fn new_handler(cm: Arc<SourceMapperDyn>) -> (Arc<Handler>, BufferedError) {
fn new_handler(_cm: Arc<SourceMapperDyn>) -> (Arc<Handler>, BufferedError) {
let e = BufferedError::default();
let handler = Handler::with_emitter_and_flags(
Box::new(EmitterWriter::new(
Box::new(e.clone()),
Some(cm.clone()),
false,
false,
)),
HandlerFlags {
treat_err_as_bug: false,
can_emit_warnings: true,
..Default::default()
},
);
let handler = Handler::with_emitter(true, false, Box::new(MyEmiter::default()));
(Arc::new(handler), e)
}
#[derive(Clone, Default)]
struct MyEmiter(BufferedError);
impl Emitter for MyEmiter {
fn emit(&mut self, db: &DiagnosticBuilder<'_>) {
let z = &(self.0).0;
for msg in &db.message {
z.write().unwrap().push_str(&msg.0);
}
}
}
#[derive(Clone, Default)]
pub(crate) struct BufferedError(Arc<RwLock<String>>);