Rollup Angular 2 с псевдонимом пути typescript 2

Я пытаюсь установить приложение Angular 2, но у меня есть:

Не удалось разрешить app / components / xxx / xxxxx.component из xxxx \ wwwroot \ angular \ app \ app.module.js

В app.module есть ссылка на xxxxx.component, например:

import { xxxxx } from 'app/components/xxx/xxxxx.component'

поэтому в tsconfig.js есть:

"compilerOptions": {
  ...
  "paths": {
    "app/*": [ "./app/*" ],
    ...
  },
  "outDir": "wwwroot", 
  ...
},

Как я могу разрешить псевдонимы пути, такие как машинописный текст в свертке?

Я пробовал с

1) https://github.com/frostney/rollup-plugin-alias

rollup-config.js:

export default {
  entry: 'wwwroot/angular/app/main-aot.js',
  dest: 'wwwroot/dist/build.js',
  sourceMap: false,
  format: 'iife',
  plugins: [
      nodeResolve({jsnext: true, module: true}),
      commonjs({
        include: 'node_modules/rxjs/**',
      }),
      alias({
            'app': '.' // asuming "wwwroot/angular/app/" is the working dir
      }),
      uglify()
  ]
}

2) https://github.com/dot-build/rollup-plugin-includepaths < / а>

rollup-config.js:

let includePathOptions = {
    include: {},
    paths: ['../'], // asuming "wwwroot/angular/app/" is the working dir
    external: [],
    extensions: ['.js']
};

export default {
  entry: 'wwwroot/angular/app/main-aot.js',
  dest: 'wwwroot/dist/build.js',
  sourceMap: false,
  format: 'iife',
  plugins: [
      nodeResolve({jsnext: true, module: true}),
      commonjs({
        include: 'node_modules/rxjs/**',
      }),
      includePaths(includePathOptions),
      uglify()
  ]
}

Но ничего из этого не работает. Любая идея? Заранее спасибо!!!


person Agustin Seifert    schedule 06.01.2017    source источник


Ответы (2)


Я использую Angular 4 в среде ASP.NET MVC и столкнулся с той же проблемой при использовании «путей» в моем tsconfig.json файле.

Я также пробовал использовать rollup-plugin-alias, rollup-plugin-paths и rollup-plugin-typescript. Ни один из них не работал. Однако я обнаружил, что rollup-plugin-import-alias работал у меня.

Мой файл AOT tsconfig.json:

{
    "compilerOptions": {
        // ...
        "baseUrl": "./",
        "paths": {
            "myCommon/*": ["./tmp/myCommonFolder/*"]
        }
        // ...
    }
}

Мой rollup-config.js файл:

import nodeResolve      from 'rollup-plugin-node-resolve';
import commonjs         from 'rollup-plugin-commonjs';
import importAlias      from 'rollup-plugin-import-alias';

export default {
    // ...
    plugins: [
        nodeResolve({jsnext: true, module: true})
        , commonjs({
            include: 'node_modules/rxjs/**'
        })
        , importAlias({
            Paths: {
                // `__dirname` is built into rollup and was needed for me to get the right path
                myCommon: __dirname + '/tmp/myCommonFolder'
            }
            , Extentions: ['js']
        })
    ]
    // ...
};

Дополнительное примечание: при использовании JIT мой путь к обычным файлам может находиться в какой-либо другой структуре папок вне корня ...

"paths": {
    "myCommon/*": ["./../../../Scripts/myCommonFolder/*"]
}

Однако AOT и Rollup, похоже, не могут выходить за пределы корня приложения. Итак, в моей задаче gulp, которая выполняет процесс сборки AOT и Rollup, я копирую все во временную папку в корне моего приложения.

gulp.task('tmp:copy', function () {
    gulp.src(['Scripts/myCommonFolder/**'])
    .pipe(gulp.dest('Areas/Services/Scripts/MyAppRoot/tmp/myCommonFolder'));
});
person Joe Bell    schedule 09.10.2017

вы пробовали использовать плагин машинописного текста для накопления?

https://github.com/rollup/rollup-plugin-typescript

установить с npm install --save-dev rollup-plugin-typescript

import в вашем rollup-config.js import typescript from 'rollup-plugin-typescript';

и обязательно добавьте его в раздел плагинов, например

plugins: [ typescript() ]

в зависимости от настройки вашего проекта вам может потребоваться изменить зависимость, чтобы использовать локальную установку машинописного текста, например

    plugins: [
    typescript({
            typescript: require('typescript')
        })
]
person Jonathan Niu    schedule 23.01.2017
comment
Привет! Спасибо за ваш ответ. Но я сомневаюсь, что если я использую плагин typescript, он все снова скомпилируется? У меня есть сгенерированный * .js - person Agustin Seifert; 23.01.2017