2016-06-25 13 views
22

Tôi đang cố gắng sử dụng npm làm công cụ xây dựng.Cách sử dụng các tập lệnh package.json để sao chép các tệp có đuôi tệp cụ thể

Một trở ngại mà tôi gặp phải là tôi cần sao chép các tệp javascript từ một thư mục này sang thư mục khác. Thư mục nguồn chứa các tệp bản ghi, tệp javascript và tệp bản đồ, nhưng trong thư mục đích, tôi chỉ quan tâm đến tệp javascript.

Tôi không muốn tạo bản sao kê cho từng tệp nhưng muốn sao chép tất cả tệp .js. Ngoài ra, thư mục nguồn của tôi chứa các thư mục con cũng chứa các tệp javascript. Những cần phải được sao chép là tốt, và duy trì cấu trúc thư mục con.

Điều tôi đã thử đang sử dụng NCP với bộ lọc nhưng tôi không thể làm cho bộ lọc hoạt động. Tôi đã thử nghiệm regex được sử dụng trong bộ lọc và nó xuất hiện để làm việc tốt. Thử nghiệm được thực hiện tại Regex Tester với cụm từ thông dụng .*\.js$ và các chuỗi kiểm tra như main.ts, main.jsmain.js.map v.v. và chỉ các chuỗi .js được khớp.

gói json My chứa thông tin sau (viết tắt):

{ 
    "scripts": { 
     "copy": "ncp scripts wwwroot/scripts --filter=\".*(\\\\.js$)\"" 
    }, 
    "devDependencies": { 
     "ncp": "2.0.0.0" 
    } 
} 

Kể từ regex của tôi là trong một chuỗi trong một chuỗi Tôi có hai con trốn khỏi nó. Tôi cũng đã thử các biến thể khác, ví dụ:

--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 

Tôi không có cách nào kết hôn với NCP. Nếu cái gì khác hoạt động tốt hơn thì tôi sẽ sử dụng nó.

Vì vậy: Làm cách nào để, bên trong phần tập lệnh của package.json chỉ sao chép các tệp có phần mở rộng speific vào một thư mục khác? Tôi khá chắc chắn rằng tôi đã bỏ qua điều gì đó rõ ràng hiển nhiên ...

Trả lời

38

cpx có thể là một sự thay thế tốt.

Nó có một CLI, cho phép bạn sử dụng những đống thay vì regex, có thể bảo vệ cây thư mục, và là nhật tương đối như tôi viết những dòng này ....

+8

Perfect. Bây giờ kịch bản của tôi là "copy": "cpx \" scripts/**/* .js \ "wwwroot/scripts", với devDependency "cpx": "1.3.1". Đó chính xác là những gì tôi đang tìm kiếm. –

3

Bạn có thể sử dụng gulp.js cho điều này. Viết tác vụ gulp để cô lập chỉ các tệp js (/path/to/files/*.js) và di chuyển nó đến đích mà bạn chọn. Nó sẽ chỉ yêu cầu một vài dòng mã. Bao gồm trong phần kịch bản của package.json nếu cần.

Các liên kết đến gulp.js: https://gulpjs.com/

var gulp = require('gulp'); 
gulp.task('jscopy', function(){ 
    return gulp.src('client/templates/*.js') 
    .pipe(gulp.dest('build/js')) 
}); 
Các vấn đề liên quan