2016-12-12 2 views
2

Я хочу знать, возможно ли скопировать папку node_modules в выходной каталог после запуска команды tsc.Как включить node_modules в выходной каталог с TypeScript

Моя ситуация, что у меня есть проект с TypeScript и использование некоторых пакетов npm. И мне нужно, чтобы мой выходной каталог имел все зависимости npm, потому что мне нужно сжать его и отправить по http (на AWS Lambda).

Моя структура проекта выглядит так:

|-.vscode --> visual studio code 
|-lib --> output dir 
|-node_modules --> npm dependencies 
|-src --> .ts files 
|-jsconfig.json 
|-tsconfig.json 

Как можно добиться?

Большое спасибо!

ответ

3

Вы должны иметь возможность только cp директорию. Если вы хотите автоматизировать его можно обернуть tsc и cp звонков в НПХ скриптах в вашем package.json:

{ 
    "scripts": { 
     "build": "tsc <your command line options>", 
     "postbuild": "cp -R node_modules lib/node_modules" 
    } 
} 

Затем, когда вы используете npm run build ваша команда cp должна автоматически работать, как хорошо.

1

Для этого я создал простую задачу gulp.

gulpfile.js:

var gulp = require('gulp'); 
var install = require('gulp-install'); 

const PROD_DEST = '../dist'; 

gulp.task('default', function() { 
    return gulp.src(['./package.json']) 
     .pipe(gulp.dest(PROD_DEST)) 
     .pipe(install({ 
      args: ['only=production'] 
     })); 
}); 


package.json:

... 
"scripts": { 
    "build:prod": "tsc && gulp" 
} 
"devDependencies": { 
    "gulp": "^3.9.1", 
    "gulp-install": "^0.6.0", 
}, 
... 

Таким образом, я могу запустить npm run build:prod на transpile источники машинопись в PROD_DEST.
gulp копирует package.json в эту папку и запускает npm install --only=production, в котором устанавливается только зависимости времени выполнения.
Этот подход очиститель, если у вас много devDependencies и платформа независимая.