@sveltejs/vite-plugin-svelte
Advanced tools
Comparing version 1.0.0-next.37 to 1.0.0-next.38
@@ -687,7 +687,16 @@ var __defProp = Object.defineProperty; | ||
const pkg = depData.pkg; | ||
const isCjs = pkg.main && !pkg.module && !pkg.exports; | ||
if (!isCjs) | ||
const hasEsmFields = pkg.module || pkg.exports; | ||
if (hasEsmFields) | ||
return false; | ||
const entryExt = path2.extname(pkg.main); | ||
return !entryExt || entryExt === ".js" || entryExt === ".cjs"; | ||
if (pkg.main) { | ||
const entryExt = path2.extname(pkg.main); | ||
return !entryExt || entryExt === ".js" || entryExt === ".cjs"; | ||
} else { | ||
try { | ||
localRequire.resolve(`${dep}/index.js`); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
} | ||
@@ -1428,4 +1437,2 @@ | ||
} | ||
} else { | ||
throw new Error(`failed to resolve package.json of ${importee} imported by ${importer}`); | ||
} | ||
@@ -1467,6 +1474,6 @@ } | ||
return; | ||
const viteMetadataPath = path6.resolve(viteConfig.cacheDir, "_metadata.json"); | ||
if (!fs6.existsSync(viteMetadataPath)) | ||
const viteMetadataPath = findViteMetadataPath(viteConfig.cacheDir); | ||
if (!viteMetadataPath) | ||
return; | ||
const svelteMetadataPath = path6.resolve(viteConfig.cacheDir, "_svelte_metadata.json"); | ||
const svelteMetadataPath = path6.resolve(viteMetadataPath, "../_svelte_metadata.json"); | ||
const currentSvelteMetadata = JSON.stringify(generateSvelteMetadata(options), (_, value) => { | ||
@@ -1490,2 +1497,10 @@ return typeof value === "function" ? value.toString() : value; | ||
} | ||
function findViteMetadataPath(cacheDir) { | ||
const metadataPaths = ["_metadata.json", "deps/_metadata.json"]; | ||
for (const metadataPath of metadataPaths) { | ||
const viteMetadataPath = path6.resolve(cacheDir, metadataPath); | ||
if (fs6.existsSync(viteMetadataPath)) | ||
return viteMetadataPath; | ||
} | ||
} | ||
@@ -1499,3 +1514,2 @@ // src/index.ts | ||
const cache = new VitePluginSvelteCache(); | ||
const pkg_resolve_errors = /* @__PURE__ */ new Set(); | ||
let requestParser; | ||
@@ -1576,10 +1590,6 @@ let options; | ||
} | ||
try { | ||
const resolved = resolveViaPackageJsonSvelte(importee, importer, cache); | ||
if (resolved) { | ||
log.debug(`resolveId resolved ${resolved} via package.json svelte field of ${importee}`); | ||
return resolved; | ||
} | ||
} catch (err) { | ||
pkg_resolve_errors.add(importee); | ||
const resolved = resolveViaPackageJsonSvelte(importee, importer, cache); | ||
if (resolved) { | ||
log.debug(`resolveId resolved ${resolved} via package.json svelte field of ${importee}`); | ||
return resolved; | ||
} | ||
@@ -1591,17 +1601,5 @@ }, | ||
const svelteRequest = requestParser(id, ssr); | ||
if (!svelteRequest) { | ||
if (!svelteRequest || svelteRequest.query.svelte) { | ||
return; | ||
} | ||
const { filename, query } = svelteRequest; | ||
if (query.svelte) { | ||
if (query.type === "style") { | ||
const css = cache.getCSS(svelteRequest); | ||
if (css) { | ||
log.debug(`transform returns css for ${filename}`); | ||
return css; | ||
} | ||
} | ||
log.error("failed to transform tagged svelte request", svelteRequest); | ||
throw new Error(`failed to transform tagged svelte request for id ${id}`); | ||
} | ||
let compileData; | ||
@@ -1620,3 +1618,3 @@ try { | ||
} | ||
log.debug(`transform returns compiled js for ${filename}`); | ||
log.debug(`transform returns compiled js for ${svelteRequest.filename}`); | ||
return compileData.compiled.js; | ||
@@ -1632,9 +1630,2 @@ }, | ||
} | ||
}, | ||
buildEnd() { | ||
if (pkg_resolve_errors.size > 0) { | ||
log.warn(`vite-plugin-svelte was unable to find package.json of the following packages and wasn't able to resolve via their "svelte" field. | ||
If you had difficulties importing svelte components from a package, then please contact the author and ask them to export the package.json file. | ||
${Array.from(pkg_resolve_errors, (s) => `- ${s}`).join("\n")}`.replace(/\t/g, "")); | ||
} | ||
} | ||
@@ -1641,0 +1632,0 @@ }; |
{ | ||
"name": "@sveltejs/vite-plugin-svelte", | ||
"version": "1.0.0-next.37", | ||
"version": "1.0.0-next.38", | ||
"license": "MIT", | ||
@@ -63,7 +63,7 @@ "author": "dominikg", | ||
"diff-match-patch": "^1.0.5", | ||
"esbuild": "^0.14.14", | ||
"rollup": "^2.66.1", | ||
"svelte": "^3.46.3", | ||
"esbuild": "^0.14.23", | ||
"rollup": "^2.67.3", | ||
"svelte": "^3.46.4", | ||
"tsup": "^5.11.13", | ||
"vite": "^2.7.13" | ||
"vite": "^2.8.4" | ||
}, | ||
@@ -70,0 +70,0 @@ "scripts": { |
@@ -30,3 +30,2 @@ import fs from 'fs'; | ||
const cache = new VitePluginSvelteCache(); | ||
const pkg_resolve_errors = new Set(); | ||
// updated in configResolved hook | ||
@@ -140,10 +139,6 @@ let requestParser: IdParser; | ||
try { | ||
const resolved = resolveViaPackageJsonSvelte(importee, importer, cache); | ||
if (resolved) { | ||
log.debug(`resolveId resolved ${resolved} via package.json svelte field of ${importee}`); | ||
return resolved; | ||
} | ||
} catch (err) { | ||
pkg_resolve_errors.add(importee); | ||
const resolved = resolveViaPackageJsonSvelte(importee, importer, cache); | ||
if (resolved) { | ||
log.debug(`resolveId resolved ${resolved} via package.json svelte field of ${importee}`); | ||
return resolved; | ||
} | ||
@@ -155,18 +150,5 @@ }, | ||
const svelteRequest = requestParser(id, ssr); | ||
if (!svelteRequest) { | ||
if (!svelteRequest || svelteRequest.query.svelte) { | ||
return; | ||
} | ||
const { filename, query } = svelteRequest; | ||
if (query.svelte) { | ||
if (query.type === 'style') { | ||
const css = cache.getCSS(svelteRequest); | ||
if (css) { | ||
log.debug(`transform returns css for ${filename}`); | ||
return css; // TODO return code arg instead? it's the code from load hook. | ||
} | ||
} | ||
log.error('failed to transform tagged svelte request', svelteRequest); | ||
throw new Error(`failed to transform tagged svelte request for id ${id}`); | ||
} | ||
let compileData; | ||
@@ -185,3 +167,3 @@ try { | ||
} | ||
log.debug(`transform returns compiled js for ${filename}`); | ||
log.debug(`transform returns compiled js for ${svelteRequest.filename}`); | ||
return compileData.compiled.js; | ||
@@ -198,16 +180,2 @@ }, | ||
} | ||
}, | ||
/** | ||
* All resolutions done; display warnings wrt `package.json` access. | ||
*/ | ||
// TODO generateBundle isn't called by vite, is buildEnd enough or should it be logged once per violation in resolve | ||
buildEnd() { | ||
if (pkg_resolve_errors.size > 0) { | ||
log.warn( | ||
`vite-plugin-svelte was unable to find package.json of the following packages and wasn't able to resolve via their "svelte" field. | ||
If you had difficulties importing svelte components from a package, then please contact the author and ask them to export the package.json file. | ||
${Array.from(pkg_resolve_errors, (s) => `- ${s}`).join('\n')}`.replace(/\t/g, '') | ||
); | ||
} | ||
} | ||
@@ -214,0 +182,0 @@ }; |
@@ -1,7 +0,8 @@ | ||
import { findRootSvelteDependencies } from '../dependencies'; | ||
import { findRootSvelteDependencies, needsOptimization } from '../dependencies'; | ||
import * as path from 'path'; | ||
import { createRequire } from 'module'; | ||
describe('dependencies', () => { | ||
describe('findRootSvelteDependencies', () => { | ||
it('should find svelte dependencies in packages/e2e-test/hmr', async () => { | ||
it('should find svelte dependencies in packages/e2e-test/hmr', () => { | ||
const deps = findRootSvelteDependencies(path.resolve('packages/e2e-tests/hmr')); | ||
@@ -12,3 +13,3 @@ expect(deps).toHaveLength(1); | ||
}); | ||
it('should find nested svelte dependencies in packages/e2e-test/package-json-svelte-field', async () => { | ||
it('should find nested svelte dependencies in packages/e2e-test/package-json-svelte-field', () => { | ||
const deps = findRootSvelteDependencies( | ||
@@ -30,2 +31,12 @@ path.resolve('packages/e2e-tests/package-json-svelte-field') | ||
}); | ||
describe('needsOptimization', () => { | ||
it('should optimize cjs deps only', () => { | ||
const localRequire = createRequire(path.resolve('packages/e2e-tests/dependencies')); | ||
expect(needsOptimization('e2e-test-dep-cjs-and-esm', localRequire)).toBe(false); | ||
expect(needsOptimization('e2e-test-dep-cjs-only', localRequire)).toBe(true); | ||
expect(needsOptimization('e2e-test-dep-esm-only', localRequire)).toBe(false); | ||
expect(needsOptimization('e2e-test-dep-index-only', localRequire)).toBe(true); | ||
expect(needsOptimization('e2e-test-dep-types-only', localRequire)).toBe(false); | ||
}); | ||
}); | ||
}); |
@@ -190,8 +190,19 @@ import { log } from './log'; | ||
// see https://github.com/sveltejs/vite-plugin-svelte/issues/162 | ||
const isCjs = pkg.main && !pkg.module && !pkg.exports; | ||
if (!isCjs) return false; | ||
// ensure entry is js so vite can prebundle it | ||
// see https://github.com/sveltejs/vite-plugin-svelte/issues/233 | ||
const entryExt = path.extname(pkg.main); | ||
return !entryExt || entryExt === '.js' || entryExt === '.cjs'; | ||
const hasEsmFields = pkg.module || pkg.exports; | ||
if (hasEsmFields) return false; | ||
if (pkg.main) { | ||
// ensure entry is js so vite can prebundle it | ||
// see https://github.com/sveltejs/vite-plugin-svelte/issues/233 | ||
const entryExt = path.extname(pkg.main); | ||
return !entryExt || entryExt === '.js' || entryExt === '.cjs'; | ||
} else { | ||
// check if has implicit index.js entrypoint | ||
// https://github.com/sveltejs/vite-plugin-svelte/issues/281 | ||
try { | ||
localRequire.resolve(`${dep}/index.js`); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
} | ||
@@ -198,0 +209,0 @@ |
@@ -19,7 +19,6 @@ import fs from 'fs'; | ||
const viteMetadataPath = path.resolve(viteConfig.cacheDir, '_metadata.json'); | ||
const viteMetadataPath = findViteMetadataPath(viteConfig.cacheDir); | ||
if (!viteMetadataPath) return; | ||
if (!fs.existsSync(viteMetadataPath)) return; | ||
const svelteMetadataPath = path.resolve(viteConfig.cacheDir, '_svelte_metadata.json'); | ||
const svelteMetadataPath = path.resolve(viteMetadataPath, '../_svelte_metadata.json'); | ||
const currentSvelteMetadata = JSON.stringify(generateSvelteMetadata(options), (_, value) => { | ||
@@ -45,1 +44,9 @@ return typeof value === 'function' ? value.toString() : value; | ||
} | ||
function findViteMetadataPath(cacheDir: string) { | ||
const metadataPaths = ['_metadata.json', 'deps/_metadata.json']; | ||
for (const metadataPath of metadataPaths) { | ||
const viteMetadataPath = path.resolve(cacheDir, metadataPath); | ||
if (fs.existsSync(viteMetadataPath)) return viteMetadataPath; | ||
} | ||
} |
@@ -30,4 +30,2 @@ import path from 'path'; | ||
} | ||
} else { | ||
throw new Error(`failed to resolve package.json of ${importee} imported by ${importer}`); | ||
} | ||
@@ -34,0 +32,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
428644
5732