Skip to content

Commit

Permalink
feat!: use .npmignore file to limit which files are published (#2921)
Browse files Browse the repository at this point in the history
* feat!: use package.json files to limit which files are published

Fixes: #2372

* Use npmignore instead of package.json#files

* Add update-gyp.py to npmignore

* Add install to pack test

* Use output var for pack dir

* Move existing .gitignore entries to .npmignore

* Sort git and npm ignores

* Update and cleanup workflows
  • Loading branch information
lukekarrys authored Oct 28, 2023
1 parent 4e493d4 commit 864a979
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 29 deletions.
78 changes: 56 additions & 22 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
# TODO: Line 48, enable pytest --doctest-modules
# TODO: add `python -m pytest --doctest-modules`

name: Tests
on:
Expand All @@ -12,44 +12,82 @@ permissions:
contents: read # to fetch code (actions/checkout)

jobs:
Lint_Python:
lint-python:
name: Lint Python
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install --user ruff
- run: ruff --output-format=github --select="E,F,PLC,PLE,UP,W,YTT" --ignore="E721,PLC1901,S101,UP031" --target-version=py38 .
Lint_JS:

lint-js:
name: Lint JS
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Install Dependencies
run: npm install --no-progress
run: npm install
- name: Lint
run: npm run lint
Engines:

check-engines:
name: Check Engines
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Install Dependencies
run: |
npm install --no-progress
run: npm install
- name: Check Engines
run: |
# TODO: move this to its own action
npm install @npmcli/arborist@7 semver@7 --no-save
node .github/scripts/check-engines.js
Tests:
needs: Lint_Python # Lint_Python takes ~5 seconds, so wait for it to pass before running the full matrix of tests.
test-pack:
name: Test Pack
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Update npm
run: npm install npm@latest -g
- name: Install Dependencies
run: npm install
- name: Pack
id: pack
env:
NODE_GYP_TEMP_DIR: '${{ runner.temp }}/node-gyp'
run: |
mkdir -p $NODE_GYP_TEMP_DIR
npm pack
tar xzf *.tgz -C $NODE_GYP_TEMP_DIR --strip-components=1
cp -r test/ $NODE_GYP_TEMP_DIR/test/
echo "dir=$NODE_GYP_TEMP_DIR" >> "$GITHUB_OUTPUT"
- name: Test
working-directory: ${{ steps.pack.outputs.dir }}
env:
FULL_TEST: '1'
run: |
npm install
npm test
tests:
# lint-python takes ~5 seconds, so wait for it to pass before running the full matrix of tests.
needs: [lint-python]
strategy:
fail-fast: false
max-parallel: 15
Expand All @@ -63,7 +101,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Use Python ${{ matrix.python }}
Expand All @@ -74,26 +112,22 @@ jobs:
PYTHON_VERSION: ${{ matrix.python }} # Why do this?
- name: Install Dependencies
run: |
npm install --no-progress
npm install
pip install pytest
- name: Set Windows environment
if: matrix.os == 'windows'
- name: Set Windows Env
if: runner.os == 'Windows'
run: |
echo 'GYP_MSVS_VERSION=2015' >> $Env:GITHUB_ENV
echo 'GYP_MSVS_OVERRIDE_PATH=C:\\Dummy' >> $Env:GITHUB_ENV
- name: Run Python tests
- name: Run Python Tests
run: python -m pytest
# - name: Run doctests with pytest
# run: python -m pytest --doctest-modules
- name: Environment Information
run: npx envinfo
- name: Run Node tests (macOS or Linux)
- name: Run Tests (macOS or Linux)
if: runner.os != 'Windows'
shell: bash
run: npm test --python="${pythonLocation}/python"
env:
FULL_TEST: ${{ (matrix.node == '20.x' && matrix.python == '3.12') && '1' || '0' }}
- name: Run tests (Windows)
- name: Run Tests (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: npm run test --python="${env:pythonLocation}\\python.exe"
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/visual-studio.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Dependencies
run: |
npm install --no-progress
- name: Environment Information
run: npx envinfo
run: npm install
- name: Run Node tests
shell: pwsh
run: |
Expand Down
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
.ncu
.nyc_output
*.swp
gyp/test
node_modules
test/.node-gyp
.ncu
.nyc_output
node-gyp-*.tgz
package-lock.json
test/.node-gyp
15 changes: 15 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.ncu
.nyc_output
*.swp
/.github/
/docs/
/gyp/.github/
/gyp/*.md
/gyp/AUTHORS
/gyp/test
/gyp/tools/
/node-gyp-*.tgz
/test/
/test/.node-gyp
/update-gyp.py
node-gyp-*.tgz

0 comments on commit 864a979

Please # to comment.