Ответ 1
cpx может быть хорошей заменой.
У него есть CLI, который позволяет вам использовать глобы вместо регулярного выражения, может сохранять дерево каталогов и относительно современно, поскольку я пишу это....
Я пытаюсь сделать npm инструментом сборки.
Один камнем преткновения, с которым я столкнулся, является то, что мне нужно скопировать файлы javascript из одной папки в другую. Исходная папка содержит файлы typescript, файлы javascript и файлы карт, но в целевой папке меня интересуют только файлы javascript.
Я не хочу делать копию для каждого файла, но хочу скопировать все .js файлы. Кроме того, моя исходная папка содержит вложенные папки, которые также содержат файлы javascript. Их также необходимо скопировать и сохранить структуру подпапки.
Я попытался использовать NCP с фильтром, но я не могу заставить фильтр работать. Я тестировал регулярное выражение, используемое в фильтре, и он работает нормально. Тест проводился в Regex Tester с регулярным выражением .*\.js$
и тестовыми строками типа main.ts
, main.js
main.js.map
и т.д., И только строки .js были сопоставлены.
В моем пакете json содержится следующее (сокращенно):
{
"scripts": {
"copy": "ncp scripts wwwroot/scripts --filter=\".*(\\\\.js$)\""
},
"devDependencies": {
"ncp": "2.0.0.0"
}
}
Так как мое регулярное выражение находится в строке в строке, я дважды сбежал от нее. Я также пробовал другие варианты, например:
--filter=/.*\.js$/g - compilation error
--filter=/.*\\.js$/g - no files copied
--filter=\".*\\.js$\" - no files copied
--filter=\"/.*\\.js$/g\" - no files copied
(no filter) - all files copied
Я никоим образом не женат на NCP. Если что-то еще работает лучше, я буду использовать это.
Итак: Как мне, внутри раздела сценариев package.json копировать только файлы с определенным расширением в другую папку? Я почти уверен, что упустил что-то ослепительно очевидное...
cpx может быть хорошей заменой.
У него есть CLI, который позволяет вам использовать глобы вместо регулярного выражения, может сохранять дерево каталогов и относительно современно, поскольку я пишу это....
Вы можете использовать gulp.js для этого. Напишите задачу gulp, чтобы изолировать только файлы js (/path/to/files/*.js) и перенести их в пункт назначения по вашему выбору. Для этого потребуется всего несколько строк кода. Включите это в раздел script package.json, если необходимо.
Ссылка на gulp.js: https://gulpjs.com/
var gulp = require('gulp');
gulp.task('jscopy', function(){
return gulp.src('client/templates/*.js')
.pipe(gulp.dest('build/js'))
});
Там также модуль npm называется copyfiles
https://github.com/calvinmetcalf/copyfiles
copyfiles --flat source/*.css styles