Skip to content

Commit

Permalink
feat: transform into monorepo (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
Brooooooklyn authored Jan 20, 2022
1 parent 83f072a commit d0de72e
Show file tree
Hide file tree
Showing 55 changed files with 7,935 additions and 1,753 deletions.
10 changes: 10 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{js,json,yml}]
charset = utf-8
indent_style = space
indent_size = 2
105 changes: 62 additions & 43 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ jobs:
target: x86_64-apple-darwin
architecture: x64
build: |
yarn build
strip -x *.node
yarn build -- --features with_simd
strip -x packages/*/*.node
- host: windows-latest
build: |
yarn build
yarn build -- --features with_simd
target: x86_64-pc-windows-msvc
architecture: x64
- host: windows-latest
build: |
yarn build --target i686-pc-windows-msvc
yarn build -- --features with_simd
yarn test
target: i686-pc-windows-msvc
architecture: x86
Expand All @@ -47,37 +47,38 @@ jobs:
docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-debian
docker tag $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-debian builder
build: |
docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build && strip *.node
docker run --env RUST_TARGET --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder yarn build -- --features with_simd && strip packages/*/*.node
- host: ubuntu-latest
target: x86_64-unknown-linux-musl
architecture: x64
docker: |
docker pull $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine
docker tag $DOCKER_REGISTRY_URL/napi-rs/napi-rs/nodejs-rust:lts-alpine builder
build: docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder sh -c "unset RUSTFLAGS && unset CC && yarn build && strip *.node"
build: |
docker run --env RUST_TARGET --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder sh -c "unset RUSTFLAGS && unset CC && yarn build -- --features with_simd && strip packages/*/*.node"
- host: macos-latest
target: aarch64-apple-darwin
build: |
yarn build --target=aarch64-apple-darwin
strip -x *.node
- host: ubuntu-latest
yarn build -- --features with_simd
strip -x packages/*/*.node
- host: ubuntu-18.04
architecture: x64
target: aarch64-unknown-linux-gnu
setup: |
sudo apt-get update
sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu -y
build: |
yarn build --target=aarch64-unknown-linux-gnu
aarch64-linux-gnu-strip *.node
- host: ubuntu-latest
yarn build -- --features with_simd
aarch64-linux-gnu-strip packages/*/*.node
- host: ubuntu-18.04
architecture: x64
target: armv7-unknown-linux-gnueabihf
setup: |
sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y
build: |
yarn build --target=armv7-unknown-linux-gnueabihf
arm-linux-gnueabihf-strip *.node
yarn build -- --features oxipng_libdeflater
arm-linux-gnueabihf-strip packages/*/*.node
- host: ubuntu-latest
architecture: x64
target: aarch64-linux-android
Expand All @@ -86,8 +87,8 @@ jobs:
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang++"
export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
yarn build --target aarch64-linux-android
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip *.node
yarn build -- --features with_simd
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip packages/*/*.node
- host: ubuntu-latest
architecture: x64
target: armv7-linux-androideabi
Expand All @@ -96,8 +97,8 @@ jobs:
export CC="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
export CXX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++"
export PATH="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
yarn build --target armv7-linux-androideabi
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip *.node
yarn build -- --features oxipng_libdeflater
${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip packages/*/*.node
- host: ubuntu-latest
architecture: x64
target: aarch64-unknown-linux-musl
Expand All @@ -106,9 +107,11 @@ jobs:
docker pull ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
docker tag ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine builder
build: |
docker run --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder sh -c "yarn build --target=aarch64-unknown-linux-musl && /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node"
docker run --env RUST_TARGET --rm -v ~/.cargo/git:/root/.cargo/git -v ~/.cargo/registry:/root/.cargo/registry -v $(pwd):/build -w /build builder sh -c "yarn build -- --features with_simd && /aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip packages/*/*.node"
name: stable - ${{ matrix.settings.target }} - node@16
runs-on: ${{ matrix.settings.host }}
env:
RUST_TARGET: ${{ matrix.settings.target }}
steps:
- uses: actions/checkout@v2
- name: Setup node
Expand Down Expand Up @@ -157,15 +160,15 @@ jobs:
if: ${{ matrix.settings.setup }}
shell: bash
- name: Install dependencies
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Build
run: ${{ matrix.settings.build }}
shell: bash
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: bindings-${{ matrix.settings.target }}
path: ${{ env.APP_NAME }}.*.node
path: packages/*/*.node
if-no-files-found: error
build-freebsd:
runs-on: macos-10.15
Expand Down Expand Up @@ -199,22 +202,23 @@ jobs:
yarn --version
run: |
export PATH="/usr/local/cargo/bin:$PATH"
export RUST_TARGET="x86_64-unknown-freebsd"
pwd
ls -lah
whoami
env
freebsd-version
yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
yarn build
strip -x *.node
yarn install
yarn build -- --features with_simd
strip -x packages/*/*.node
yarn test
rm -rf node_modules
rm -rf target
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: bindings-freebsd
path: ${{ env.APP_NAME }}.*.node
path: packages/*/*.node
if-no-files-found: error
test-macOS-windows-binding:
name: Test bindings on ${{ matrix.settings.target }} - node@${{ matrix.node }}
Expand Down Expand Up @@ -245,12 +249,15 @@ jobs:
path: node_modules
key: npm-cache-test-${{ matrix.settings.target }}-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: bindings-${{ matrix.settings.target }}
path: .
path: artifacts
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R .
shell: bash
Expand Down Expand Up @@ -282,12 +289,15 @@ jobs:
path: node_modules
key: npm-cache-test-linux-x64-gnu-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: bindings-x86_64-unknown-linux-gnu
path: .
path: artifacts
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R .
shell: bash
Expand Down Expand Up @@ -319,12 +329,15 @@ jobs:
path: node_modules
key: npm-cache-test-x86_64-unknown-linux-musl-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Download artifacts
uses: actions/download-artifact@v2
with:
name: bindings-x86_64-unknown-linux-musl
path: .
path: artifacts
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R .
shell: bash
Expand All @@ -349,17 +362,20 @@ jobs:
uses: actions/download-artifact@v2
with:
name: bindings-aarch64-unknown-linux-gnu
path: .
- name: List packages
run: ls -R .
shell: bash
path: artifacts
- name: Cache NPM dependencies
uses: actions/cache@v2
with:
path: node_modules
key: npm-cache-test-linux-aarch64-gnu-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
run: yarn install --ignore-scripts --ignore-platform --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R packages
shell: bash
- name: Setup and run tests
uses: addnab/docker-run-action@v3
with:
Expand Down Expand Up @@ -388,17 +404,20 @@ jobs:
uses: actions/download-artifact@v2
with:
name: bindings-armv7-unknown-linux-gnueabihf
path: .
- name: List packages
run: ls -R .
shell: bash
path: artifacts
- name: Cache NPM dependencies
uses: actions/cache@v2
with:
path: node_modules
key: npm-cache-test-linux-arm-gnueabihf-${{ matrix.node }}-${{ hashFiles('yarn.lock') }}
- name: Install dependencies
run: yarn install --ignore-scripts --ignore-platform --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Move artifacts
run: yarn artifacts
shell: bash
- name: List packages
run: ls -R packages
shell: bash
- name: Setup and run tests
uses: addnab/docker-run-action@v3
with:
Expand Down Expand Up @@ -434,15 +453,15 @@ jobs:
restore-keys: |
npm-cache-
- name: Install dependencies
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
run: yarn install
- name: Download all artifacts
uses: actions/download-artifact@v2
with:
path: artifacts
- name: Move artifacts
run: yarn artifacts
- name: List packages
run: ls -R ./npm
run: ls -R ./packages
shell: bash
- name: Publish
run: |
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,12 @@ node_modules
Cargo.lock
.swc
.DS_Store
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.turbo
*.tsbuildinfo
768 changes: 768 additions & 0 deletions .yarn/releases/yarn-3.1.1.cjs

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
nodeLinker: node-modules

yarnPath: .yarn/releases/yarn-3.1.1.cjs
37 changes: 5 additions & 32 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,35 +1,8 @@
[package]
edition = "2021"
name = "napi-rs_pngquant"
version = "0.0.0"

[lib]
crate-type = ["cdylib"]

[dependencies]
libc = "0.2"
napi = {version = "2", default-features = false, features = ["napi3"]}
napi-derive = {version = "2", default-features = false, features = ["type-def"]}

[target.'cfg(not(any(target_arch = "x86_64", target_arch = "x86", target_arch = "aarch64")))'.dependencies.oxipng]
default-features = false
features = ["parallel", "libdeflater"]
version = "5"

[target.'cfg(any(target_arch = "x86_64", target_arch = "x86", target_arch = "aarch64"))'.dependencies.oxipng]
default-features = false
features = ["parallel"]
version = "5"

[target.'cfg(not(all(target_os = "linux", target_arch = "arm")))'.dependencies.mozjpeg-sys]
version = "1"

[target.'cfg(all(target_os = "linux", target_arch = "arm"))'.dependencies.mozjpeg-sys]
default-features = false
version = "1"

[build-dependencies]
napi-build = "1"
[workspace]
members = [
"./packages/binding",
]

[profile.release]
codegen-units = 1
lto = true
11 changes: 11 additions & 0 deletions lerna.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"packages": ["packages/*"],
"npmClient": "yarn",
"useWorkspaces": true,
"version": "independent",
"command": {
"version": {
"message": "chore(release): publish"
}
}
}
2 changes: 1 addition & 1 deletion optimize-test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const { readFileSync, writeFileSync } = require('fs')

const { losslessCompressPng, compressJpeg } = require('./index')
const { losslessCompressPng, compressJpeg } = require('./packages/binding')

writeFileSync('optimized-lossless.png', losslessCompressPng(readFileSync('./un-optimized.png')))

Expand Down
Loading

0 comments on commit d0de72e

Please sign in to comment.