Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.0 #165

Merged
merged 15 commits into from
Aug 23, 2024
161 changes: 14 additions & 147 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,131 +1,35 @@
name: ci

on:
- pull_request
- push
push:
branches:
- master
- '2.0'
paths-ignore:
- '*.md'
pull_request:
paths-ignore:
- '*.md'

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
name:
- Node.js 0.8
- Node.js 0.10
- Node.js 0.12
- io.js 1.x
- io.js 2.x
- io.js 3.x
- Node.js 4.x
- Node.js 5.x
- Node.js 6.x
- Node.js 7.x
- Node.js 8.x
- Node.js 9.x
- Node.js 10.x
- Node.js 11.x
- Node.js 12.x
- Node.js 13.x
- Node.js 14.x
- Node.js 15.x
- Node.js 16.x
- Node.js 17.x
- Node.js 18.x
- Node.js 19.x
- Node.js 20.x
- Node.js 21.x
- Node.js 22.x

include:
- name: Node.js 0.8
node-version: "0.8"
npm-i: [email protected] [email protected]
npm-rm: nyc

- name: Node.js 0.10
node-version: "0.10"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 0.12
node-version: "0.12"
npm-i: [email protected] [email protected] [email protected]

- name: io.js 1.x
node-version: "1.8"
npm-i: [email protected] [email protected] [email protected]

- name: io.js 2.x
node-version: "2.5"
npm-i: [email protected] [email protected] [email protected]

- name: io.js 3.x
node-version: "3.3"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 4.x
node-version: "4.9"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 5.x
node-version: "5.12"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 6.x
node-version: "6.17"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 7.x
node-version: "7.10"
npm-i: [email protected] [email protected] [email protected]

- name: Node.js 8.x
node-version: "8.16"
npm-i: [email protected] [email protected]

- name: Node.js 9.x
node-version: "9.11"
npm-i: [email protected] [email protected]

- name: Node.js 10.x
node-version: "10.24"
npm-i: [email protected]

- name: Node.js 11.x
node-version: "11.15"
npm-i: [email protected]

- name: Node.js 12.x
node-version: "12.22"

- name: Node.js 13.x
node-version: "13.14"

- name: Node.js 14.x
node-version: "14.19"

- name: Node.js 15.x
node-version: "15.14"

- name: Node.js 16.x
node-version: "16.14"

- name: Node.js 17.x
node-version: "17.8"

- name: Node.js 18.x
node-version: "18.14"

- name: Node.js 19.x
node-version: "19.6"
node-version: "18"

- name: Node.js 20.x
node-version: "20.12"

- name: Node.js 21.x
node-version: "21.7"
node-version: "20"

- name: Node.js 22.x
node-version: "22.0"
node-version: "22"

steps:
- uses: actions/checkout@v4
Expand All @@ -134,41 +38,10 @@ jobs:
shell: bash -eo pipefail -l {0}
run: |
nvm install --default ${{ matrix.node-version }}
if [[ "${{ matrix.node-version }}" == 0.* && "$(cut -d. -f2 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then
nvm install --alias=npm 0.10
nvm use ${{ matrix.node-version }}
sed -i '1s;^.*$;'"$(printf '#!%q' "$(nvm which npm)")"';' "$(readlink -f "$(which npm)")"
npm config set strict-ssl false
fi
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"

- name: Configure npm
run: |
if [[ "$(npm config get package-lock)" == "true" ]]; then
npm config set package-lock false
else
npm config set shrinkwrap false
fi

- name: Remove npm module(s) ${{ matrix.npm-rm }}
run: npm rm --silent --save-dev ${{ matrix.npm-rm }}
if: matrix.npm-rm != ''

- name: Install npm module(s) ${{ matrix.npm-i }}
run: npm install --save-dev ${{ matrix.npm-i }}
if: matrix.npm-i != ''

- name: Setup Node.js version-specific dependencies
shell: bash
run: |
# eslint for linting
# - remove on Node.js < 10
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then
node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
grep -E '^eslint(-|$)' | \
sort -r | \
xargs -n1 npm rm --silent --save-dev
fi
run: npm config set package-lock false

- name: Install Node.js dependencies
run: npm install
Expand All @@ -184,20 +57,14 @@ jobs:

- name: Run tests
shell: bash
run: |
if npm -ps ls nyc | grep -q nyc; then
npm run test-ci
else
npm test
fi
run: npm run test-ci

- name: Lint code
if: steps.list_env.outputs.eslint != ''
run: npm run lint

- name: Collect code coverage
uses: coverallsapp/github-action@master
if: steps.list_env.outputs.nyc != ''
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: run-${{ matrix.test_number }}
Expand Down
28 changes: 28 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
unreleased
=========================

* deps:
* parseurl@^1.3.3
* excape-html@^1.0.3
* encodeurl@^2.0.0
* supertest@^6.3.4
* safe-buffer@^5.2.1
* nyc@^17.0.0
* mocha@^10.7.0
* Changes from 1.x

2.0.0-beta.2 / 2024-03-20
=========================

* deps: [email protected]

2.0.0-beta.1 / 2022-02-05
=========================

* Change `dotfiles` option default to `'ignore'`
* Drop support for Node.js 0.8
* Remove `hidden` option; use `dotfiles` option instead
* deps: [email protected]
- Use `mime-types` for file to content type mapping
- deps: [email protected]

1.15.0 / 2022-03-24
===================

Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ true. Disabling this will ignore the `immutable` and `maxAge` options.

##### dotfiles

Set how "dotfiles" are treated when encountered. A dotfile is a file
Set how "dotfiles" are treated when encountered. A dotfile is a file
or directory that begins with a dot ("."). Note this check is done on
the path itself without checking if the path actually exists on the
disk. If `root` is specified, only the dotfiles above the root are
Expand All @@ -56,8 +56,7 @@ to "deny").
- `'deny'` Deny a request for a dotfile and 403/`next()`.
- `'ignore'` Pretend like the dotfile does not exist and 404/`next()`.

The default value is similar to `'ignore'`, with the exception that this
default will not ignore the files within a directory that begins with a dot.
The default value is `'ignore'`.

##### etag

Expand Down Expand Up @@ -215,7 +214,7 @@ app.listen(3000)
#### Different settings for paths

This example shows how to set a different max age depending on the served
file type. In this example, HTML files are not cached, while everything else
file. In this example, HTML files are not cached, while everything else
is for 1 day.

```js
Expand All @@ -232,8 +231,8 @@ app.use(serveStatic(path.join(__dirname, 'public'), {

app.listen(3000)

function setCustomCacheControl (res, path) {
if (serveStatic.mime.lookup(path) === 'text/html') {
function setCustomCacheControl (res, file) {
if (path.extname(file) === '.html') {
// Custom Cache-Control for HTML files
res.setHeader('Cache-Control', 'public, max-age=0')
}
Expand Down
11 changes: 2 additions & 9 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,12 @@ install:
# Setup Node.js version-specific dependencies
- ps: |
# mocha for testing
# - use 2.x for Node.js < 0.10
# - use 3.x for Node.js < 4
# - use 5.x for Node.js < 6
# - use 6.x for Node.js < 8
# - use 7.x for Node.js < 10
# - use 8.x for Node.js < 12
if ([int]$env:nodejs_version.split(".")[0] -eq 0 -and [int]$env:nodejs_version.split(".")[1] -lt 10) {
npm install --silent --save-dev [email protected]
} elseif ([int]$env:nodejs_version.split(".")[0] -lt 4) {
if ([int]$env:nodejs_version.split(".")[0] -lt 4) {
npm install --silent --save-dev [email protected]
} elseif ([int]$env:nodejs_version.split(".")[0] -lt 6) {
npm install --silent --save-dev [email protected]
Expand All @@ -62,13 +59,9 @@ install:
}
- ps: |
# supertest for http calls
# - use 1.1.0 for Node.js < 0.10
# - use 2.0.0 for Node.js < 4
# - use 3.4.2 for Node.js < 6
# - use 6.1.6 for Node.js < 8
if ([int]$env:nodejs_version.split(".")[0] -eq 0 -and [int]$env:nodejs_version.split(".")[1] -lt 10) {
npm install --silent --save-dev [email protected]
} elseif ([int]$env:nodejs_version.split(".")[0] -lt 4) {
if ([int]$env:nodejs_version.split(".")[0] -lt 4) {
npm install --silent --save-dev [email protected]
} elseif ([int]$env:nodejs_version.split(".")[0] -lt 6) {
npm install --silent --save-dev [email protected]
Expand Down
1 change: 0 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ var url = require('url')
*/

module.exports = serveStatic
module.exports.mime = send.mime

/**
* @param {string} root
Expand Down
20 changes: 10 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{
"name": "serve-static",
"description": "Serve static files",
"version": "1.15.0",
"version": "2.0.0-beta.2",
"author": "Douglas Christopher Wilson <[email protected]>",
"license": "MIT",
"repository": "expressjs/serve-static",
"dependencies": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
"send": "0.18.0"
"encodeurl": "^2.0.0",
"escape-html": "^1.0.3",
"parseurl": "^1.3.3",
"send": "^1.0.0"
},
"devDependencies": {
"eslint": "7.32.0",
Expand All @@ -19,18 +19,18 @@
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "5.2.0",
"eslint-plugin-standard": "4.1.0",
"mocha": "9.2.2",
"nyc": "15.1.0",
"safe-buffer": "5.2.1",
"supertest": "6.2.2"
"mocha": "^10.7.0",
"nyc": "^17.0.0",
"safe-buffer": "^5.2.1",
"supertest": "^6.3.4"
},
"files": [
"LICENSE",
"HISTORY.md",
"index.js"
],
"engines": {
"node": ">= 0.8.0"
"node": ">= 18"
},
"scripts": {
"lint": "eslint .",
Expand Down
2 changes: 1 addition & 1 deletion test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ describe('serveStatic()', function () {
it('should set Content-Type', function (done) {
request(server)
.get('/todo.txt')
.expect('Content-Type', 'text/plain; charset=UTF-8')
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect(200, done)
})

Expand Down
Loading