Rollup-plugin-typescript2: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΎΡ‡Π΅Π½ΡŒ мСдлСнная с TS v3.4

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 Π°ΠΏΡ€. 2019  Β·  21ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ezolenko/rollup-plugin-typescript2

Π§Ρ‚ΠΎ происходит ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π½Π΅ Ρ‚Π°ΠΊ

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» TS Π΄ΠΎ v3.4.2, врСмя компиляции стало ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ. Π‘ TS v3.3 ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» построСн Π·Π° ~ 20 сСкунд, Π° с TS v3.4 ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ~ 5 ΠΌΠ»Π½.

Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» с clean: true , я пытался Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ typescript: require('typescript') , я пытался ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ rollup ΠΈ всС связанныС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ .. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, компиляция Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ tsc -p tsconfig.prod.json Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π²Ρ‹Π²ΠΎΠ΄ dist.

Π‘Ρ€Π΅Π΄Π°

ВСрсии

  • ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст: v3.4.2
  • Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚: v1.6.0
  • rollup-plugin-typescript2: v0.19.2

rollup.config.js

  {
    input: 'src/index.ts',
    output: [
      { file: pkg.main, format: 'cjs' },
      { file: pkg.module, format: 'es' },
    ],
    plugins: [
      external({ includeDependencies: true }),
      resolve(),
      typescript({
        tsconfig: './tsconfig.prod.json',
        rollupCommonJSResolveHack: true,
      }),
      commonjs(),
      filesize(),
    ],
  }

tsconfig.json


tsconfig.json

{
  "compilerOptions": {
    "module": "esnext",
    "target": "es5",
    "jsx": "react",
    "esModuleInterop": true,
    "lib": ["dom", "es2017"],
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": false,
    "downlevelIteration": true
  },
  "include": ["src/**/*", "types/**/*"]
}


tsconfig.prod.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./dist",
    "noUnusedLocals": true,
    "sourceMap": true,
    "declaration": true
  },
  "exclude": ["src/doc", "**/stories.tsx", "**/test.tsx", "**/fixture.ts"]
}

package.json

    "rollup": "^1.6.0",
    "rollup-plugin-commonjs": "^9.2.1",
    "rollup-plugin-filesize": "^6.0.1",
    "rollup-plugin-node-resolve": "^4.0.1",
    "rollup-plugin-peer-deps-external": "^2.2.0",
    "rollup-plugin-typescript2": "^0.19.2",
    "typescript": "^3.4.2"

Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½Π° с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ 3


Π’Ρ‹Ρ…ΠΎΠ΄

rpt2: typescript version: 3.4.2
rpt2: tslib version: 1.9.3
rpt2: rollup-plugin-typescript2 version: 0.19.2
rpt2: plugin options:
{
    "tsconfig": "./tsconfig.prod.json",
    "rollupCommonJSResolveHack": true,
    "clean": true,
    "verbosity": 3,
    "typescript": "version 3.4.2",
    "check": true,
    "cacheRoot": "/Users/yannpringault/git/PayFit/components/.rpt2_cache",
    "include": [
        "*.ts+(|x)",
        "**/*.ts+(|x)"
    ],
    "exclude": [
        "*.d.ts",
        "**/*.d.ts"
    ],
    "abortOnError": true,
    "useTsconfigDeclarationDir": false,
    "tsconfigOverride": {},
    "transformers": [],
    "tsconfigDefaults": {},
    "objectHashIgnoreUnknownHack": false
}
rpt2: rollup config:
{
    "chunkGroupingSize": 5000,
    "experimentalCacheExpiry": 10,
    "inlineDynamicImports": false,
    "input": "src/index.ts",
    "perf": false,
    "plugins": [
        {
            "name": "peer-deps-external"
        },
        {
            "name": "node-resolve"
        },
        {
            "name": "rpt2"
        },
        {
            "name": "commonjs"
        },
        {
            "name": "filesize"
        }
    ]
}
rpt2: built-in options overrides: {
    "noEmitHelpers": false,
    "importHelpers": true,
    "noResolve": false,
    "noEmit": false,
    "inlineSourceMap": false,
    "outDir": "/Users/yannpringault/git/PayFit/components/.rpt2_cache/placeholder",
    "moduleResolution": 2,
    "allowNonTsExtensions": true,
    "declarationDir": "/Users/yannpringault/git/PayFit/components"
}
rpt2: parsed tsconfig: {
    "options": {
        "module": 6,
        "target": 1,
        "jsx": 2,
        "esModuleInterop": true,
        "lib": [
            "lib.dom.d.ts",
            "lib.es2017.d.ts"
        ],
        "moduleResolution": 2,
        "rootDir": "/Users/yannpringault/git/PayFit/components/src",
        "forceConsistentCasingInFileNames": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "suppressImplicitAnyIndexErrors": true,
        "noUnusedLocals": true,
        "downlevelIteration": true,
        "outDir": "/Users/yannpringault/git/PayFit/components/.rpt2_cache/placeholder",
        "sourceMap": true,
        "declaration": true,
        "configFilePath": "/Users/yannpringault/git/PayFit/components/./tsconfig.prod.json",
        "noEmitHelpers": false,
        "importHelpers": true,
        "noResolve": false,
        "noEmit": false,
        "inlineSourceMap": false,
        "allowNonTsExtensions": true,
        "declarationDir": "/Users/yannpringault/git/PayFit/components"
    },
    "fileNames": [
        "/Users/yannpringault/git/PayFit/components/src/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/Alert/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Alert/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Avatar/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Avatar/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/AvatarGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/AvatarGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Badge/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Badge/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Button/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Button/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Checkbox/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Checkbox/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/CheckboxGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/CheckboxGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/Popin/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/MenuContext.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/DropdownItem/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/DropdownItem/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Field/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Field/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Icon/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Icon/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Input/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Input/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Layout/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Legend/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Legend/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Loader/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Loader/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressBar/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressBar/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressCircle/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressCircle/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/RadioGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/RadioGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Select/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Select/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Steps/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Steps/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Body.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Cell.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Footer.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Header.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/HeaderCell.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/HeaderRow.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Limit.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Row.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/TableGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/TableGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tag/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tag/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Text/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Toggle/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Toggle/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tooltip/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tooltip/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/colors.test.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/colors.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/react.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/string.test.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/string.ts",
        "/Users/yannpringault/git/PayFit/components/src/primitives/_helpers.tsx",
        "/Users/yannpringault/git/PayFit/components/src/primitives/box.tsx",
        "/Users/yannpringault/git/PayFit/components/src/primitives/text.tsx",
        "/Users/yannpringault/git/PayFit/components/src/utils/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/colors/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/shadows/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/shadows/test.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/zIndex/index.ts",
        "/Users/yannpringault/git/PayFit/components/types/index.d.ts",
        "/Users/yannpringault/git/PayFit/components/types/modules.d.ts"
    ],
    "typeAcquisition": {
        "enable": false,
        "include": [],
        "exclude": []
    },
    "raw": {
        "extends": "./tsconfig.json",
        "compilerOptions": {
            "outDir": "./dist",
            "noUnusedLocals": true,
            "sourceMap": true,
            "declaration": true
        },
        "exclude": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "compileOnSave": false,
        "include": [
            "src/**/*",
            "types/**/*"
        ]
    },
    "errors": [],
    "wildcardDirectories": {
        "/users/yannpringault/git/payfit/components/src": 1,
        "/users/yannpringault/git/payfit/components/types": 1
    },
    "compileOnSave": false,
    "configFileSpecs": {
        "includeSpecs": [
            "src/**/*",
            "types/**/*"
        ],
        "excludeSpecs": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "validatedIncludeSpecs": [
            "src/**/*",
            "types/**/*"
        ],
        "validatedExcludeSpecs": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "wildcardDirectories": {
            "/users/yannpringault/git/payfit/components/src": 1,
            "/users/yannpringault/git/payfit/components/types": 1
        }
    }
}
rpt2: included:
'[
    "*.ts+(|x)",
    "**/*.ts+(|x)"
]'
rpt2: excluded:
'[
    "*.d.ts",
    "**/*.d.ts"
]'

blocked help wanted

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@ezolenko Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚!

Π― поставил clean: true ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» rtp2 Π΄ΠΎ 0.20.1 . Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

TS 3.3.3333

build -> 18s
tsc   -> 14.39s

TS 3.3.4000

build -> 17.3s
tsc   -> 14.39s

TS 3.4.1

build -> 5m 25.1s
tsc   -> 21.26s

TS 3.4.3

build -> 5m 52.7s
tsc   -> 21.57s

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ TS, которая каТСтся связанной, Π½ΠΎ Ρƒ мСня @types/styled-components Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΎ Π½Π° v4.1.4 поэтому ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΎΠΉ случай.

Π”Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ, Ссли Π²Π°ΠΌ понадобится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация.


Π Π°Π΄ΠΈ интСрСса я Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» послСднюю сборку 3.5 :

TS 3.5.0-dev.20190413

build -> 1m 23.5s
tsc   -> 18.84s

ВсС 21 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с 24s Π½Π° 345s ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ TS с 3.3.4000 Π½Π° 3.4.3

Π― попытался воспроизвСсти, ΠΈ сначала я ΡƒΠ²ΠΈΠ΄Π΅Π» Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ clean: true ΠΈ нСсколько Ρ€Π°Π· пСрСходя ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями машинописного тСкста, я Π½Π΅ Π²ΠΈΠΆΡƒ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² чистой сборкС сСйчас ...

НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ clean: true , ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ rtp2 Π΄ΠΎ послСднСй вСрсии (0.20.1 ΠΈΠ»ΠΈ master) ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ врСмя сборки нСсколько Ρ€Π°Π· подряд Π½Π° ts 3.3 ΠΈ ts 3.4?

@ezolenko Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚!

Π― поставил clean: true ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» rtp2 Π΄ΠΎ 0.20.1 . Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

TS 3.3.3333

build -> 18s
tsc   -> 14.39s

TS 3.3.4000

build -> 17.3s
tsc   -> 14.39s

TS 3.4.1

build -> 5m 25.1s
tsc   -> 21.26s

TS 3.4.3

build -> 5m 52.7s
tsc   -> 21.57s

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ TS, которая каТСтся связанной, Π½ΠΎ Ρƒ мСня @types/styled-components Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΎ Π½Π° v4.1.4 поэтому ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΎΠΉ случай.

Π”Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ, Ссли Π²Π°ΠΌ понадобится Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация.


Π Π°Π΄ΠΈ интСрСса я Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» послСднюю сборку 3.5 :

TS 3.5.0-dev.20190413

build -> 1m 23.5s
tsc   -> 18.84s

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Π°Ρ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (https://github.com/Microsoft/TypeScript/issues/30663) ΠΈ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ вСрсия 3.5-dev стала для вас Π² 5 Ρ€Π°Π· быстрСС, заставляСт мСня Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлали с LanguageServer API. Π­Ρ‚ΠΎ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ rpt2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ компиляции, ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ срСдства ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² IDE (поэтому врСмя оТидания WebStorm истСкаСт ΠΈ Ρ‚. Π”.).

Π’ вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ структуры Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, поэтому Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ styled-components Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Π½Π΅ Π²ΠΈΠΆΡƒ большого замСдлСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ сборкС самого rpt2.

Π”ΡƒΠΌΠ°ΡŽ, доТдСмся Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° 3.5.

кстати, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ check: false

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ», исправлСно Π»ΠΈ это с выпуском 3.5?

@ tomasro27 Ни для мСня, Π½ΠΈ с 6 ( 3.6.0-dev.20190621 ). ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, <3.3 всС Π΅Ρ‰Π΅ самый быстрый.

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ 3.5 Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π½ΠΎ всС ΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅

Π•ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ обновлСния ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ? ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ всС Π΅Ρ‰Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ TS?

Π”Π°, я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ с этой Ρ†Π΅Π»ΡŒΡŽ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, любой ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ :)

+1
3.5.3 Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ для нас

check: false ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π²Ρ‹Π΄Π°Π΅Ρ‚ ошибок компиляции (Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ vscode, ΠΎΠ½ выдаст сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…).

По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, я ΠΌΠΎΠ³Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ check: false ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ CSS (Π² JS). πŸ‘

@ezolenko , Π·Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π·ΠΎΠ² api машинописного тСкста Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ сборки? :)

@ZadingBrombie Π½Π΅Ρ‚, всС, Ρ‡Ρ‚ΠΎ я знаю, Π΅ΡΡ‚ΡŒ Π² этой Ρ‚Π΅ΠΌΠ΅. Бвязанная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Typescript, вСроятно, связана, Π½ΠΎ Π½Π΅ являСтся прямой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ исправлСна ​​в вСрсии 3.5+, Π°, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, это Π½Π΅ Ρ‚Π°ΠΊ).

Если Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ сборки, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ts 3.3 быстрСС, Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² машинописном тСкстС, Π° Π² Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, спасибо. Если я Π΄ΠΎΠ±Π΅Ρ€ΡƒΡΡŒ Π΄ΠΎ Π½Π΅Π³ΠΎ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ стСна, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π³ΠΎΡ‚ΠΎΠ², Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΡƒΠ΄Π°Ρ€ΠΈΡ‚ΡŒΡΡ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ :)

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ стилизованныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠ°ΠΊ каТСтся
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, докумСнтация ΠΏΠΎ Typescript уТасна

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ машинописного тСкста ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ большиС объСдинСния стилизованных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². ЕдинствСнноС мСсто, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, - ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст, Ссли Π½Π΅Ρ‚ способа ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ модуля ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ (Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½).

На самом Π΄Π΅Π»Π΅ я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ кСш Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ модуля Π² Π²Ρ‹Π·ΠΎΠ²Π΅ nodeModuleNameResolver здСсь: https://github.com/ezolenko/rollup-plugin-typescript2/blob/b7c7389dcdf168715669520128ca656d6e940111/src/index.ts#L148

НС ΡƒΠ²Π΅Ρ€Π΅Π½, заставляСт Π»ΠΈ ts ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π”Π°, я Π²ΠΈΠ΄Π΅Π» это TODO :)
К соТалСнию, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° кСша Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ модуля ΠΏΡ€ΠΈ Π΅Π³ΠΎ использовании ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ настройкой, Π½ΠΎ Π½Π΅ стилизованныС. Он ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ кСш для Ρ‚Π΅Ρ… ...

Π’ настоящСС врСмя я занимаюсь пСрСносом своСй ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ C # ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° TypeScript ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Rollup для объСдинСния. (РаньшС Ρƒ мСня Π±Ρ‹Π» собствСнный Π½Π°Π±ΠΎΡ€ инструмСнтов C #> Haxe> JavaScript). К соТалСнию, я Ρ‚Π°ΠΊΠΆΠ΅ сильно ΡΡ‚Ρ€Π°Π΄Π°ΡŽ ΠΎΡ‚ скорости компиляции ΠΌΠΎΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ TypeScript, Ρ‡Ρ‚ΠΎ затрудняСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡŽ нСсколько ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΏΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ссли ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ttypescript для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСобразования AST.
Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° : ~ 50000

rollup -c rollup.config.ts : ~ 9-10 сСкунд
rollup -c rollup.config.ts -w (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ компиляция) : ~ 9-10 сСкунд
rollup -c rollup.config.ts -w (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 прСдупрСТдСния Π² 1 Ρ„Π°ΠΉΠ» TS) : ~ 20 сСкунд
rollup -c rollup.config.ts -w (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ прСдупрСТдСния) : ~ 20 сСкунд

tsc - вСрсия : 3.8.3
tsc --project tsconfig.json : ~ 6-7 сСкунд
tsc --project tsconfig.json -w (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ компиляция) : ~ 6-7 сСкунд
tsc --project tsconfig.json -w (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 прСдупрСТдСния Π² 1 Ρ„Π°ΠΉΠ» TS) : ~ 0,1-0,2 сСк.
tsc --project tsconfig.json -w (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ прСдупрСТдСния) : ~ 0,1-0,2 сСк.

ttsc - вСрсия : 3.8.3
ttsc --project tsconfig.json : ~ 7-8 сСкунд
ttsc --project tsconfig.json -w (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ компиляция) : ~ 6-7 сСкунд
ttsc --project tsconfig.json -w (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 прСдупрСТдСния Π² 1 Ρ„Π°ΠΉΠ» TS) : ~ 0,1-0,2 сСк.
ttsc --project tsconfig.json -w (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ прСдупрСТдСния) : ~ 0,1-0,2 сСк.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сборки Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ tsconfig.

МнС каТСтся довольно Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ сборка / сборка часов ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π΄Π²ΠΎΠ΅ большС, Ρ‡Π΅ΠΌ полная сборка.

Когда Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ тСстирования, Π² ΠΌΠΎΠ΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π΄Π΅Π»Π° ΠΈΠ΄ΡƒΡ‚ Π±Π΅Π·ΡƒΠΌΠ½ΠΎ. Π― ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΊΠ°Ρ€ΠΌΠΎΠΉ ΠΈ этим ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ машинописного тСкста. Как Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Π΅Ρ‚Π΅: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ тСстов ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ свой собствСнный ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ числа Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ. ΠŸΠ°ΠΌΡΡ‚ΡŒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ увСличиваСтся Π΄ΠΎ> 2 Π“Π‘; Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚ тСстовый запуск фактичСски Π½Π΅ запускаСтся. Π­Ρ‚ΠΎ происходит с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ npm run test .

Когда ΠΎΠ½ достигаСт области Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° для ...Β» Π² тСстовом ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ, я Π²ΠΈΠΆΡƒ смСхотворно высокиС числа:
File01.test.ts, содСрТащий 1 простой тСст класса парсСра, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 15 сСкунд
File02.test.ts, содСрТащий 11 тСстов синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° XML, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 2,5 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹.
File03.test.ts Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ Ρ‡Π΅Ρ€Π΅Π· 5 ΠΌΠΈΠ½ΡƒΡ‚.

Π― понятия Π½Π΅ имСю, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это ΠΈΠ·-Π·Π° модуля Π½Π°Π±ΠΎΡ€Π° ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹Ρ… тСкстов, Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вСроятная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я связан.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠ΅ Ρ€Π΅ΠΏΠΎ довольно большоС ΠΈ слоТноС, я Π½Π΅ стал ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°Ρ…. Если ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ½Π΅, ΠΊΠ°ΠΊ ΠΈΡ… ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ, я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ / Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ профилирования ΠΈ Ρ‚. Π”. Π― ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ простой нСзависимый Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ‰ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с ΠΌΠΎΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΎΠ±Π΅Ρ‰Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сохранится.

@ Danielku15 Π’Π°ΡˆΠ° основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹

Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ явно Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнныС ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ сборки машинописного тСкста (ΠΏΡ€ΠΈ запускС этого Π½Π΅ Π±Ρ‹Π»ΠΎ).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ @rollup/plugin-typescript (https://github.com/rollup/plugins/tree/master/packages/typescript), ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ числа.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ машинописного тСкста ΠΈΠ· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ объСдинСния (ΠΊΠ°ΠΊ этап ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сборки Π² npm ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² этом Ρ€ΠΎΠ΄Π΅) ΠΈ вмСсто этого ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ js Π² объСдинСниС. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сборку, хотя я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ tsc ΠΈ rollup Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ просмотра, ΠΈ Ссли ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ настроСн ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΎΠ½ просто Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’Π°ΡˆΠ° основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ с C #, Π° Π½Π΅ с C ++.

НС ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅: я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ…ΠΎΡ‡Ρƒ Π»ΠΈ я пСрСнСсти Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ / Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ C ++ Π½Π° TypeScript. Π’ зависимости ΠΎΡ‚ использования макросов ΠΈ шаблонов (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, нравятся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ C ++) Π²ΠΎ врСмя ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ всС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, моя кодовая Π±Π°Π·Π° C # всСгда Π±Ρ‹Π»Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊ ΡΡ‚ΠΈΠ»ΡŽ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌΡƒ кросс-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки, поэтому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌ для структуры ΠΊΠΎΠ΄Π° . МнС просто Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. 😊

Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π³ΠΈΠ½ явно Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнныС ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ сборки машинописного тСкста (ΠΏΡ€ΠΈ запускС этого Π½Π΅ Π±Ρ‹Π»ΠΎ).

Π­Ρ‚ΠΎ интСрСсно, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ этот ΠΏΠ»Π°Π³ΠΈΠ½ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ Β«ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉΒ» сборки? Π­Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ полная чистая сборка ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ использовании watch. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ машинописного тСкста Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°, Таль, Ρ‡Ρ‚ΠΎ этот ΠΏΠ»Π°Π³ΠΈΠ½ Π΅Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ обновлСния, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ врСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° компилятор Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… сцСнариСв, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ. Но врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅, каТСтся Ρ€Π°Π·Π½Ρ‹ΠΌ. Волько это ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ чистая сборка быстрСС, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ просмотра.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ @ rollup / plugin-typescript ...

Бпасибо Π·Π° подсказку, я ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡΡ Π»ΠΈ ΠΎΠ½Π°.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ машинописного тСкста ΠΈΠ· Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ объСдинСния.

Π£ мСня Π±Ρ‹Π»Π° такая установка Π² самом Π½Π°Ρ‡Π°Π»Π΅, Π½ΠΎ я отказался ΠΎΡ‚ Π½Π΅Π΅ Π½Π° ΠΏΠΎΠ»ΠΏΡƒΡ‚ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΒ» Π·Π° сборками Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Π΅Ρ‰Π΅ Ρ€Π°Π·, Ссли смогу ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ с двумя инструмСнтами, Β«Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈΒ» нСзависимо. πŸ‘

ОбновлСниС 1: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я смог Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всю свою срСду компиляции ΠΈ тСстирования с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ tsc, связанного с Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ. МнС Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный ΠΏΠ»Π°Π³ΠΈΠ½ накоплСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ tsconfig, Π½ΠΎ послС этого ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Чистая компиляция: 9 сСкунд, Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ: 0,5-1 сСкунды, Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ тСсты Ρ‡Π΅Ρ€Π΅Π· Karma + Rollup (компиляция Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° тСстов).

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ