diff --git a/.size-limit.json b/.size-limit.json index 8a98e34c5f..f4f7183cbe 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -9,7 +9,7 @@ { "name": "zx/index", "path": "build/*.{js,cjs}", - "limit": "842 kB", + "limit": "781 kB", "brotli": false, "gzip": false }, @@ -23,14 +23,14 @@ { "name": "vendor", "path": "build/vendor-*", - "limit": "803 kB", + "limit": "745 kB", "brotli": false, "gzip": false }, { "name": "all", "path": "build/*", - "limit": "875 kB", + "limit": "815 kB", "brotli": false, "gzip": false } diff --git a/package-lock.json b/package-lock.json index 9f537b2937..cafcee0c5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "zx", - "version": "8.1.3", + "version": "8.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "zx", - "version": "8.1.3", + "version": "8.1.4", "license": "Apache-2.0", "bin": { "zx": "build/cli.js" @@ -29,6 +29,7 @@ "esbuild-plugin-entry-chunks": "^0.1.15", "esbuild-plugin-extract-helpers": "^0.0.6", "esbuild-plugin-hybrid-export": "^0.2.4", + "esbuild-plugin-resolve": "^2.0.0", "esbuild-plugin-transform-hook": "^0.1.1", "esbuild-plugin-utils": "^0.1.0", "fs-extra": "^11.2.0", @@ -1838,6 +1839,13 @@ "esbuild": ">=0.19.0" } }, + "node_modules/esbuild-plugin-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-resolve/-/esbuild-plugin-resolve-2.0.0.tgz", + "integrity": "sha512-eJy9B8yDW5X/J48eWtR1uVmv+DKfHvYYnrrcqQoe/nUkVHVOTZlJnSevkYyGOz6hI90t036Y5QIPDrGzmppxfg==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild-plugin-transform-hook": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/esbuild-plugin-transform-hook/-/esbuild-plugin-transform-hook-0.1.1.tgz", diff --git a/package.json b/package.json index 615abad379..5f60560014 100644 --- a/package.json +++ b/package.json @@ -107,6 +107,7 @@ "esbuild-plugin-entry-chunks": "^0.1.15", "esbuild-plugin-extract-helpers": "^0.0.6", "esbuild-plugin-hybrid-export": "^0.2.4", + "esbuild-plugin-resolve": "^2.0.0", "esbuild-plugin-transform-hook": "^0.1.1", "esbuild-plugin-utils": "^0.1.0", "fs-extra": "^11.2.0", diff --git a/scripts/build-js.mjs b/scripts/build-js.mjs index cce8b6be0b..bf219b3555 100644 --- a/scripts/build-js.mjs +++ b/scripts/build-js.mjs @@ -23,9 +23,12 @@ import { entryChunksPlugin } from 'esbuild-plugin-entry-chunks' import { hybridExportPlugin } from 'esbuild-plugin-hybrid-export' import { transformHookPlugin } from 'esbuild-plugin-transform-hook' import { extractHelpersPlugin } from 'esbuild-plugin-extract-helpers' +import esbuildResolvePlugin from 'esbuild-plugin-resolve' import minimist from 'minimist' import glob from 'fast-glob' +const __dirname = path.dirname(new URL(import.meta.url).pathname) + const argv = minimist(process.argv.slice(2), { default: { entry: './src/index.ts', @@ -54,7 +57,6 @@ const { } = argv const formats = format.split(',') -const plugins = [] const cwd = Array.isArray(_cwd) ? _cwd[_cwd.length - 1] : _cwd const entries = entry.split(/:\s?/) const entryPoints = entry.includes('*') @@ -64,6 +66,12 @@ const entryPoints = entry.includes('*') const _bundle = bundle !== 'none' && !process.argv.includes('--no-bundle') const _external = _bundle ? external.split(',') : undefined // https://github.com/evanw/esbuild/issues/1466 +const plugins = [ + esbuildResolvePlugin({ + yaml: path.resolve(__dirname, '../node_modules/yaml/browser'), + }), +] + if (_bundle && entryPoints.length > 1) { plugins.push(entryChunksPlugin()) } diff --git a/src/vendor-extra.ts b/src/vendor-extra.ts index 573c5165ff..2eb95e75f9 100644 --- a/src/vendor-extra.ts +++ b/src/vendor-extra.ts @@ -25,10 +25,10 @@ import { isDynamicPattern, type Options as GlobbyOptions, } from 'globby' -import * as yaml from 'yaml' +import { parse as yamlParse, stringify as yamlStringify } from 'yaml' import * as _fs from 'fs-extra' import _createRequire from 'create-require' -import { type fetch, AbortController } from 'node-fetch-native' +import { AbortController } from 'node-fetch-native' export { fetch as nodeFetch } from 'node-fetch-native' @@ -60,7 +60,10 @@ export const glob = Object.assign(function globby( export const YAML: { parse(text: string): any stringify(object: any): string -} = yaml +} = { + parse: yamlParse, + stringify: yamlStringify, +} export const fs: typeof import('fs-extra') = _fs diff --git a/test/all.test.js b/test/all.test.js index 835de4fbdc..508604f17d 100644 --- a/test/all.test.js +++ b/test/all.test.js @@ -20,3 +20,4 @@ import './goods.test.js' import './index.test.js' import './package.test.js' import './util.test.js' +import './vendor.test.js' diff --git a/test/vendor.test.js b/test/vendor.test.js new file mode 100644 index 0000000000..3cb9775379 --- /dev/null +++ b/test/vendor.test.js @@ -0,0 +1,27 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import assert from 'node:assert' +import { test, describe } from 'node:test' +import { YAML } from '../build/vendor.js' + +describe('YAML', () => { + test('YAML.parse', () => { + assert.deepEqual(YAML.parse('a: b\n'), { a: 'b' }) + }) + + test('YAML.stringify', () => { + assert.equal(YAML.stringify({ a: 'b' }), 'a: b\n') + }) +})