نعتقد أنه يمكنك إنشاء مشروع رشيق وتضمين فقط وحدات العقدة للمعالج svelte للحصول على دعم lang='ts'
يعمل. تحقق من أن يعمل وأضف بعض الملاحظات 👍
يعمل مثل السحر https://github.com/dummdidumm/template
svelte-preprocess typescript tslib @rollup/plugin-typescript
rollup.config.js
:// ...
import sveltePreprocess from 'svelte-preprocess';
import typescript from '@rollup/plugin-typescript';
// ...
plugins: [
svelte({
// ...
preprocess: sveltePreprocess(), // <--
}),
// ...
commonjs(),
typescript(), // <-- added below commonjs
// ...
main.js
) لا يزال ملف جافا سكريبتحاولت هذا وتحقق!
__ شكرًا على كل عملك! __ يبدو أن الملف tsconfig.json
مفقود في النموذج:
rollup v1.32.1
bundles src/main.js → public/build/bundle.js...
(!) Plugin typescript: @rollup/plugin-typescript TS18003: No inputs were found in config file 'tsconfig.json'. Specified 'include' paths were '["**/*"]' and 'exclude' paths were '[]'.
[!] (plugin typescript) Error: @rollup/plugin-typescript: Couldn't process compiler options
Error: @rollup/plugin-typescript: Couldn't process compiler options
at error (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/node-entry.js:5400:30)
المحتوى التالي tsconfig.json
هو موافق؟
{
"include": ["src/**/*"],
"exclude": ["node_modules/*"],
"compilerOptions": {
"target": "es2017",
"types": ["svelte"],
"moduleResolution": "node"
}
}
rollup v1.32.1
bundles src/main.js → public/build/bundle.js...
(!) Plugin typescript: @rollup/plugin-typescript TS18003: No inputs were found in config file '/Users/bgd/Documents/Projects/Essential modules/tsconfig.json'. Specified 'include' paths were '["src/**/*"]' and 'exclude' paths were '["node_modules/*"]'.
[!] (plugin typescript) Error: @rollup/plugin-typescript: Couldn't process compiler options
Error: @rollup/plugin-typescript: Couldn't process compiler options
at error (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/node-entry.js:5400:30)
at throwPluginError (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/node-entry.js:11878:12)
at Object.error (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/node-entry.js:12912:24)
at emitParsedOptionsErrors (/Users/bgd/Documents/Projects/Essential modules/node_modules/@rollup/plugin-typescript/dist/index.js:310:17)
at Object.buildStart (/Users/bgd/Documents/Projects/Essential modules/node_modules/@rollup/plugin-typescript/dist/index.js:469:13)
at /Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/node-entry.js:13117:25
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Promise.all (index 2)
المصدر: https://codechips.me/how-to-use-typescript-with-svelte/
مثير للاهتمام ... لم أكن بحاجة حتى إلى tsconfig.json
لذلك تركته للتو. لم أحصل على أي من هذه الأخطاء.
أحاول استخدامه مع sapper والآن حصلت على هذا الخطأ.
$ sapper dev
✗ server
@rollup/plugin-typescript: Couldn't process compiler options
✗ client
@rollup/plugin-typescript: Couldn't process compiler options
internal/modules/cjs/loader.js:584
throw err;
export const preprocess = sveltePreprocess({
postcss: true,
style: sass(),
})
plugins: [
...
...
svelte({
dev,
hydratable: true,
emitCss: true,
preprocess,
}),
...
....
commonjs(),
typescript(),
كان القصد من النموذج أن يكون بمثابة إثبات لمفهوم أن IDE يعمل خارج الصندوق مع رشاقة. أشياء مثل tsconfig.json
أو Sapper لم تكن في ذهني في ذلك الوقت.
لا يتم دعم الطباعة باستخدام Sapper بشكل عام بشكل جيد في الوقت الحالي على ما أعتقد -benmccann هل تعرف المزيد عن ذلك؟
الأشياء قريبة من العمل مع سابر. هناك مشكلتان رئيسيتان:
master
، ولكن لم يتم إصداره بعد. قد يكون هذا هو السبب في أنك ترى فقط "لا يمكن معالجة خيارات المترجم" وليس رسالة مفيدة أكثرpreload
فيها حتى الآن. هناك علاقات عامة معلقة من شأنها إصلاح هذا: https://github.com/sveltejs/sapper/pull/1222لقد صنعت شوكة من Sapper يمكنك استخدامها للتشفير في TypeScript حتى يتم دمج الإصلاحات المذكورة أعلاه وإصدارها: https://github.com/sveltejs/sapper/issues/760#issuecomment -634423518
dummdidumm شكرا
لسوء الحظ ، استمرت المشكلة.
هذا هو ملفي package.json
:
{
"name": "svelte-app",
"version": "0.0.1",
"scripts": {
"build": "npm install && rollup -c",
"dev": "npm install && rollup -c -w",
"start": "sirv public --single",
"lint": "eslint . --ext .js,.svelte; exit 0",
"lint-report": "eslint . --ext .js,.svelte -o ./.eslint-report.html -f html; exit 0"
},
"devDependencies": {
"@rollup/plugin-commonjs": "11.0.2",
"@rollup/plugin-node-resolve": "^7.0.0",
"@rollup/plugin-typescript": "^4.1.2",
"eslint": "^7.0.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"eslint-plugin-svelte3": "^2.7.3",
"rollup": "^1.20.0",
"rollup-plugin-livereload": "^1.0.0",
"rollup-plugin-svelte": "^5.0.3",
"rollup-plugin-terser": "^5.1.2",
"svelte": "^3.0.0",
"svelte-preprocess": "^3.8.0",
"tslib": "^2.0.0",
"typescript": "^3.9.5"
},
"dependencies": {
"page": "^1.11.6",
"sirv-cli": "^0.4.4"
}
}
وملف rollup.config.js
:
import svelte from "rollup-plugin-svelte";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import livereload from "rollup-plugin-livereload";
import { terser } from "rollup-plugin-terser";
import autoPreprocess from "svelte-preprocess";
import typescript from "@rollup/plugin-typescript";
const production = !process.env.ROLLUP_WATCH;
export default {
input: "src/main.js",
output: {
sourcemap: true,
format: "iife",
name: "app",
file: "public/build/bundle.js"
},
plugins: [
svelte({
// enable run-time checks when not in production
dev: !production,
// we'll extract any component CSS out into
// a separate file - better for performance
css: css => {
css.write("public/build/bundle.css");
},
preprocess: autoPreprocess()
}),
// If you have external dependencies installed from
// npm, you'll most likely need these plugins. In
// some cases you'll need additional configuration -
// consult the documentation for details:
// https://github.com/rollup/plugins/tree/master/packages/commonjs
resolve({
browser: true,
dedupe: ["svelte"]
}),
commonjs(),
typescript(),
// In dev mode, call `npm run start` once
// the bundle has been generated
!production && serve(),
// Watch the `public` directory and refresh the
// browser on changes when not in production
!production && livereload("public"),
// If we're building for production (npm run build
// instead of npm run dev), minify
production && terser()
],
watch: {
clearScreen: false
}
};
function serve () {
let started = false;
return {
writeBundle () {
if (!started) {
started = true;
require("child_process").spawn("npm", ["run", "start", "--", "--dev"], {
stdio: ["ignore", "inherit", "inherit"],
shell: true
});
}
}
};
}
لا يمكنني إعادة إنتاج الخطأ بنفسي. ولكن بالنظر إلى package.json
الخاص بك ، يبدو أنك تستخدم تراكم 1.x بدلاً من 2.x. ربما يؤدي دفع جميع التبعيات إلى أحدث إصدار إلى إصلاحه من أجلك؟
dummdidumm لقد صدمت جميع التبعيات إلى أحدث إصدار لها. لقد قمت بحذف ملف tsconfig.json
المخصص ، والملف package-lock.json
node_modules
والمجلد
رسالة خطأ:
rollup v2.15.0
bundles src/main.js → public/build/bundle.js...
(!) Plugin typescript: @rollup/plugin-typescript TS18003: No inputs were found in config file 'tsconfig.json'. Specified 'include' paths were '["**/*"]' and 'exclude' paths were '[]'.
[!] (plugin typescript) Error: @rollup/plugin-typescript: Couldn't process compiler options
Error: @rollup/plugin-typescript: Couldn't process compiler options
at error (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/rollup.js:213:30)
at throwPluginError (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/rollup.js:17117:12)
at Object.error (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/rollup.js:17911:24)
at emitParsedOptionsErrors (/Users/bgd/Documents/Projects/Essential modules/node_modules/@rollup/plugin-typescript/dist/index.js:310:17)
at Object.buildStart (/Users/bgd/Documents/Projects/Essential modules/node_modules/@rollup/plugin-typescript/dist/index.js:469:13)
at /Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/rollup.js:18109:25
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Promise.all (index 2)
at Object.rollupInternal (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/rollup.js:19099:9)
at Task.run (/Users/bgd/Documents/Projects/Essential modules/node_modules/rollup/dist/shared/watch.js:715:28)
تم تثبيت امتدادات Svelte VS Code:
تم تثبيت ملحقات VS Code الأخرى:
package.json
:
{
"name": "svelte-app",
"version": "0.0.1",
"scripts": {
"build": "npm install && rollup -c",
"dev": "npm install && rollup -c -w",
"start": "sirv public --single",
"lint": "eslint . --ext .js,.svelte; exit 0",
"lint-report": "eslint . --ext .js,.svelte -o ./.eslint-report.html -f html; exit 0"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^13.0.0",
"@rollup/plugin-node-resolve": "^8.0.1",
"@rollup/plugin-typescript": "^4.1.2",
"eslint": "^7.2.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.21.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"eslint-plugin-svelte3": "^2.7.3",
"rollup": "^2.15.0",
"rollup-plugin-livereload": "^1.3.0",
"rollup-plugin-svelte": "^5.2.2",
"rollup-plugin-terser": "^6.1.0",
"svelte": "^3.23.1",
"svelte-preprocess": "^3.9.7",
"tslib": "^2.0.0",
"typescript": "^3.9.5"
},
"dependencies": {
"page": "^1.11.6",
"sirv-cli": "^0.4.6"
}
}
rollup.config.js
:
import svelte from "rollup-plugin-svelte";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import livereload from "rollup-plugin-livereload";
import { terser } from "rollup-plugin-terser";
import autoPreprocess from "svelte-preprocess";
import typescript from "@rollup/plugin-typescript";
const production = !process.env.ROLLUP_WATCH;
export default {
input: "src/main.js",
output: {
sourcemap: true,
format: "iife",
name: "app",
file: "public/build/bundle.js"
},
plugins: [
svelte({
dev: !production,
css: css => {
css.write("public/build/bundle.css");
},
preprocess: autoPreprocess()
}),
resolve({
browser: true,
dedupe: ["svelte"]
}),
commonjs(),
typescript(),
!production && serve(),
!production && livereload("public"),
production && terser()
],
watch: {
clearScreen: false
}
};
function serve () {
let started = false;
return {
writeBundle () {
if (!started) {
started = true;
require("child_process").spawn("npm", ["run", "start", "--", "--dev"], {
stdio: ["ignore", "inherit", "inherit"],
shell: true
});
}
}
};
}
svelte.config.js
:
const autoPreprocess = require("svelte-preprocess");
module.exports = {
preprocess: [
autoPreprocess()
]
};
elvticc لدي نفس المشكلة.
لإصلاحها ، لدي:
main.js
إلى main.ts
rollup.config.json
، تغير: input: 'src/main.js'
إلى input: 'src/main.ts'
tsconfig.json
)أعلم ، قال dummdidumm entry file (main.js) has still to be a javascript file
لكنه لا يعمل بالنسبة لي: مرتبك:
مثير للاهتمام للغاية ، يبدو أنه لا يزال هناك بعض Vodoo لهذه الإعدادات - سعيد لأنك عملت على أي حال! سوف أتوجه إلى المستودع الأساسي svelte repo لمناقشة إنشاء قالب مطبوع رسمي هناك.
تضمين التغريدة
إذا نظرت إلى الريبو ، فإن أحد الأشياء التي ستلاحظها هو أن هناك ملفًا منقوشًا في الدليل /src
( stuff.ts
).
كنت أواجه نفس الخطأ ، ويقول "تم العثور على مصادر". لقد حاولت تغييره إلى main.ts
مع tsconfig.json
كما هو مقترح أعلاه ، ولكن هذا تعطل بسبب exports not found
مع بعض تصدير وحدة Commonjs الغريبة التي تم إنشاؤها تلقائيًا في الكود المجمع (ربما يتغير نمط الوحدة من شأنه إصلاح هذا).
ما يعمل هو مجرد إنشاء empty.ts
(أو أي ملف) داخل /src
(بدون tsconfig.json
إذا كان مطلوبًا) ثم تشغيل dev
.
تعديل: بعد إجراء بعض التجارب ، إليك كل مجموعة تعمل:
main.js
، لا tsconfig.json
، أي مفردة .ts
داخل /src
main.ts
، No tsconfig.json
، أضف ts-ignore
لاستيراد التطبيق:ts
// @ts-ignore
import App from './App.svelte'
main.ts
، بـ tsconfig.json
، وإعدادات بأي مما يلي:{
"compilerOptions": {
"target": "ES2015 (or greater)",
"module": "ES2015, ES2020, or ESNEXT"
}
}
شكرا على التحقيق @ GavinRay97 ! لقد قمت بتحديث النموذج.
التعليق الأكثر فائدة
elvticc لدي نفس المشكلة.
لإصلاحها ، لدي:
main.js
إلىmain.ts
rollup.config.json
، تغير:input: 'src/main.js'
إلىinput: 'src/main.ts'
(ملاحظة: يجب أن يكون لديك أيضًا
tsconfig.json
)أعلم ، قال dummdidumm
entry file (main.js) has still to be a javascript file
لكنه لا يعمل بالنسبة لي: مرتبك: