Rollup-plugin-typescript2: 项目中存在无关 TS 文件并生成声明文件时汇总编译错误

创建于 2018-06-29  ·  5评论  ·  资料来源: ezolenko/rollup-plugin-typescript2

会发生什么以及为什么会出错

在使用 rollup-plugin-typescript2 的项目中。

  • 该项目生成一个库,所以我需要它来创建类型声明以及 JS 包。
  • 我有没有内置在主项目中的打字稿文件。

编译结果在

回滚https://github.com/ezolenko/rollup-plugin-typescript2/commit/ffe3b6cd9fc03611460aac15d2b880fab7a7d093修复了这个错误。

环境

以下是复制存储库中所有文件的集合:
$ for f in $(git ls-files); do echo -e "\n// $f"; cat $f; done

版本

  • 打字稿:2.9.2
  • 汇总:0.62.0
  • 汇总插件打字稿2:0.15.1

汇总配置文件

// rollup.config.js  
import typescript from 'rollup-plugin-typescript2';

export default {   
  input: 'index.ts',   
  output: [{ file: 'dist/index.js', format: 'es' }],    
  plugins: [    
    typescript({ verbosity: 3 }),     
  ],   
};   

配置文件

// tsconfig.json     
{    
  "compilerOptions": {
    "declaration": true
  }    
}

包.json

// package.json
{    
  "name": "@cht/demo-rollup-issue",
  "private": true,     
  "engines": {
    "node": ">=8"     
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"     
  },    
  "devDependencies": { 
    "rollup": "0.62.0", 
    "rollup-plugin-typescript2": "0.15.1",   
    "ts-node": "7.0.0",    
    "typescript": "2.9.2"
  }   
}

其余的代码

// extra/extra.ts
console.log('read all about it');   
// index.ts   
module.exports = 1;

详细程度为 3 的插件输出

index.ts → dist/index.js...
rpt2: typescript version: 2.9.2
rpt2: tslib version: 1.9.2
rpt2: rollup-plugin-typescript2 version: 0.15.1
rpt2: plugin options:
{
    "verbosity": 3,
    "check": true,
    "clean": false,
    "cacheRoot": "/tmp/cht-demo-rollup-issue/.rpt2_cache",
    "include": [
        "*.ts+(|x)",
        "**/*.ts+(|x)"
    ],
    "exclude": [
        "*.d.ts",
        "**/*.d.ts"
    ],
    "abortOnError": true,
    "rollupCommonJSResolveHack": false,
    "typescript": "version 2.9.2",
    "useTsconfigDeclarationDir": false,
    "tsconfigOverride": {},
    "transformers": [],
    "tsconfigDefaults": {}
}
rpt2: rollup config:
{
    "external": [
        "",
        ""
    ],
    "inlineDynamicImports": false,
    "input": "index.ts",
    "chunkGroupingSize": 5000,
    "perf": false,
    "plugins": [
        {
            "name": "rpt2"
        }
    ],
    "entry": "index.ts"
}
rpt2: built-in options overrides: {
    "noEmitHelpers": false,
    "importHelpers": true,
    "noResolve": false,
    "noEmit": false,
    "inlineSourceMap": false,
    "outDir": "/tmp/cht-demo-rollup-issue/.rpt2_cache/placeholder",
    "moduleResolution": 2,
    "declarationDir": "/tmp/cht-demo-rollup-issue"
}
rpt2: parsed tsconfig: {
    "options": {
        "module": 5,
        "declaration": true,
        "configFilePath": "/tmp/cht-demo-rollup-issue/tsconfig.json",
        "noEmitHelpers": false,
        "importHelpers": true,
        "noResolve": false,
        "noEmit": false,
        "inlineSourceMap": false,
        "outDir": "/tmp/cht-demo-rollup-issue/.rpt2_cache/placeholder",
        "moduleResolution": 2,
        "declarationDir": "/tmp/cht-demo-rollup-issue"
    },
    "fileNames": [
        "/tmp/cht-demo-rollup-issue/index.ts",
        "/tmp/cht-demo-rollup-issue/dist/index.d.ts",
        "/tmp/cht-demo-rollup-issue/extra/extra.ts"
    ],
    "typeAcquisition": {
        "enable": false,
        "include": [],
        "exclude": []
    },
    "raw": {
        "compilerOptions": {
            "module": "ES2015",
            "declaration": true
        }
    },
    "errors": [],
    "wildcardDirectories": {
        "/tmp/cht-demo-rollup-issue": 1
    },
    "compileOnSave": false,
    "configFileSpecs": {
        "includeSpecs": [
            "**/*"
        ],
        "validatedIncludeSpecs": [
            "**/*"
        ],
        "wildcardDirectories": {
            "/tmp/cht-demo-rollup-issue": 1
        }
    }
}
rpt2: included:
'[
    "*.ts+(|x)",
    "**/*.ts+(|x)"
]'
rpt2: excluded:
'[
    "*.d.ts",
    "**/*.d.ts"
]'
rpt2: [34mAmbient types:[39m
rpt2:     /tmp/cht-demo-rollup-issue/dist/index.d.ts
rpt2:     /tmp/cht-demo-rollup-issue/node_modules/@types/estree/index.d.ts
rpt2:     /tmp/cht-demo-rollup-issue/node_modules/@types/node/index.d.ts
rpt2: [34mtranspiling[39m '/tmp/cht-demo-rollup-issue/index.ts'
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/code/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/syntacticDiagnostics/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2:     cache: '/tmp/cht-demo-rollup-issue/.rpt2_cache/7b3a3d6d8e402a4daa2232186da14bc2c8ade022/semanticDiagnostics/cache/6c8ae48d14e85933ce1e764b61d335b2aa5420f9'
rpt2: [32m    cache hit[39m
rpt2: [34mgenerated declarations[39m for '/tmp/cht-demo-rollup-issue/index.ts'
rpt2: generating target 1
rpt2: [34mrolling caches[39m
rpt2: generating missed declarations for '/tmp/cht-demo-rollup-issue/extra/extra.ts'
[!] Error: Could not find file: '/tmp/cht-demo-rollup-issue/extra/extra.ts'.
Error: Could not find file: '/tmp/cht-demo-rollup-issue/extra/extra.ts'.
    at getValidSourceFile (/tmp/cht-demo-rollup-issue/node_modules/typescript/lib/typescript.js:107554:23)
    at Object.getEmitOutput (/tmp/cht-demo-rollup-issue/node_modules/typescript/lib/typescript.js:108052:30)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/src/index.ts:311:29
    at arrayEach (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:516:11)
    at forEach (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/node_modules/lodash/lodash.js:9342:14)
    at Object.onwrite (/tmp/cht-demo-rollup-issue/node_modules/rollup-plugin-typescript2/src/index.ts:305:5)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup/dist/rollup.js:22076:39
    at Array.map (<anonymous>)
    at /tmp/cht-demo-rollup-issue/node_modules/rollup/dist/rollup.js:22075:18
    at <anonymous>

最有用的评论

看起来虚拟模块的修复破坏了声明丢失的黑客攻击,因为它们对汇总不可见......

所有5条评论

在这里复制的回购: https :

似乎这会命中导入层次结构中未包含的任何文件。 我的测试代码、演示和一个未使用的文件命中了这个。 我暂时解决了这个问题,方法是在汇总配置中添加一些我想跳过的内容的排除项。

看起来虚拟模块的修复破坏了声明丢失的黑客攻击,因为它们对汇总不可见......

现在应该修复了,在master上试试。

我会尽快发布。

确认修复,谢谢!

此页面是否有帮助?
0 / 5 - 0 等级