Language-tools: рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ + svelte-preprocessor рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЬреВрди 2020  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sveltejs/language-tools

рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╡реНрдпрд╛рдкрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ lang='ts' рд╕рдорд░реНрдерди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ svelte-preprocessor рдХреЗ рд▓рд┐рдП рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдиреЛрдЯреНрд╕ рдЬреЛрдбрд╝реЗрдВ ЁЯСН

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@elvticc рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  1. main.js рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ main.ts
  2. рдФрд░ рдореЗрдВ 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 рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рднреНрд░рдорд┐рдд:

рд╕рднреА 14 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ https://github.com/dummdidumm/template

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдВрддрд░

  • рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд npm рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ: 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 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(),

рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдерд╛ рдХрд┐ рдЖрдИрдбреАрдИ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕рдордп рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ tsconfig.json рдпрд╛ рд╕реИрдкрд░ рдЬреИрд╕реА рдмрд╛рддреЗрдВ рдирд╣реАрдВ рдереАрдВред
рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реИрдкрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ - @benmccann рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирддреЗ рд╣реИрдВ?

рдЪреАрдЬреЗрдВ рд╕реИрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рд╣реИрдВред рджреЛ рдореБрдЦреНрдп рдореБрджреНрджреЗ рд╣реИрдВ:

  1. рд╕реИрдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ master рдореЗрдВ рддрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рд╕рд┐рд░реНрдл "рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ" рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
  2. рдЖрдк рдЕрднреА рддрдХ preload рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд╛рд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреАрдЖрд░ рд▓рдВрдмрд┐рдд рд╣реИ рдЬреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдЧрд╛: https://github.com/sveltejs/sapper/pull/1222

рдореИрдВрдиреЗ рд╕реИрдкрд░ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд╕реБрдзрд╛рд░ рд╡рд┐рд▓рдп рдФрд░ рдЬрд╛рд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ: 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 рджреЗрдЦрдХрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк 2.x рдХреЗ рдмрдЬрд╛рдп рд░реЛрд▓рдЕрдк 1.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 рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП:

  • Svelte 3 рд╕реНрдирд┐рдкреЗрдЯреНрд╕ - v0.4.0
  • рд╕реНрд╡реЗрд▓реНрдЯ рдмреАрдЯрд╛ - v99.0.41
  • рд╕реНрд╡реЗрд▓реНрдЯ рдЗрдВрдЯреЗрд▓реАрд╕реЗрдВрд╕ - v0.7.1

рдЕрдиреНрдп рд╡реАрдПрд╕ рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд:

  • рдСрдЯреЛ рдмрдВрдж рдЯреИрдЧ - v0.5.7
  • рдмреНрд░реИрдХреЗрдЯ рдЬреЛрдбрд╝реА Colorizer - v1.0.61
  • рдИрдПрд╕рдПрд▓рд┐рдВрдЯ - v2.1.5
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреВрд╕реНрдЯрд░ - v0.12.3
  • рд╕рд╛рдордЧреНрд░реА рдЪрд┐рд╣реНрди рдереАрдо - v4.1.0
  • рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ - v0.11.0
  • рдиреЗрдЯрд┐рд╡рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╕реНрддрд╛рд░ - v2.11.10
  • рдПрдирдкреАрдПрдо - рд╡реА0.3.12
  • рдПрдирдкреАрдПрдо рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ - v1.3.0
  • рдкрде рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ - v2.2.0
  • рдкреАрдПрдЪрдкреА рдЗрдВрдЯреЗрд▓реАрдлреЗрдВрд╕ - v1.4.1
  • рдЯрд╣рдиреА рднрд╛рд╖рд╛ 2 - v0.9.1
  • рд╡реЗрддреБрд░ - v0.24.0

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 рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ:

  1. main.js рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ main.ts
  2. рдФрд░ рдореЗрдВ 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 рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рднреНрд░рдорд┐рдд:

рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╕реЗрдЯрдЕрдкреЛрдВ рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рд╡реЛрдбреВ рд╣реИрдВ - рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ! рдореИрдВ рд╡рд╣рд╛рдВ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рд╕реНрд╡реЗрд▓реНрдЯреЗ рд░реЗрдкреЛ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред

@AlexandreCantin @elvticc

рдпрджрд┐ рдЖрдк рд░реЗрдкреЛ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ /src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ( stuff.ts ) рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдерд╛, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреЛрдИ рд╕реНрд░реЛрдд рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ main.ts рд╕рд╛рде tsconfig.json рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ exports not found рдХрд╛рд░рдг рдЯреВрдЯ рдЧрдпрд╛, рдХреБрдЫ рдЕрдЬреАрдм рдХреЙрдордирдЬ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдпрд╛рдд рдмрдВрдбрд▓ рдХреЛрдб рдореЗрдВ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рд╢рд╛рдпрдж рдмрджрд▓ рд░рд╣рд╛ рд╣реИ) рдореЙрдбреНрдпреВрд▓ рд╢реИрд▓реА рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдЧреА)ред

рдХрд╛рдо рдХреЗрд╡рд▓ empty.ts (рдпрд╛ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓) /src (рдмрд┐рдирд╛ рдХрд┐рд╕реА tsconfig.json рдЕрдЧрд░ рдЪрд╛рд╣рддрд╛ рд╣реИ) рдХреЗ рдЕрдВрджрд░ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ dev ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреБрдЫ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рд╣рд░ рд╕рдВрдпреЛрдЬрди рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • main.js , рдирд╣реАрдВ tsconfig.json , .ts рдЕрдВрджрд░ рдХреЛрдИ рдПрдХрд▓ /src
  • main.ts , рдирд╣реАрдВ 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 ! рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

scippio picture scippio  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

baileyherbert picture baileyherbert  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shirakaba picture shirakaba  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

NickKaramoff picture NickKaramoff  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MDoder97 picture MDoder97  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ