Trong Grunt tôi đã sử dụng một plugin gọi là env. Điều đó sẽ cho phép tôi xác định một môi trường trong xây dựng cụ thể. Tôi đã có 3 bản dựng. Một là DEV sẽ sử dụng tất cả các tệp được phân tách riêng lẻ. PROD sẽ concat tất cả mọi thứ và RELEASE sẽ concat và uglify. Tôi đang tìm cách làm tương tự ở Gulp. Tôi thấy một tiền xử lý cho Gulp nhưng không có gì để xác định môi trường.Gulp Env và Preprocess
Câu hỏi là. Tôi có thể làm gì? Rõ ràng là tôi không muốn định nghĩa tất cả các tệp JS mọi lúc, và tôi không muốn 3 trang HTML khác nhau với các thẻ script khác nhau.
Trong HTML của tôi, tôi sẽ có một cái gì đó như thế này:
<!-- @if NODE_ENV == 'DEVELOPMENT' -->
<script src="js/example1.js" type="text/javascript"></script>
<script src="js/example2.js" type="text/javascript"></script>
<script src="js/example3.js" type="text/javascript"></script>
<!-- @endif -->
<!-- @if NODE_ENV == 'PRODUCTION' -->
<script src="js/project.js" type="text/javascript"></script>
<!-- @endif -->
<!-- @if NODE_ENV == 'RELEASE' -->
<script src="js/project.min.js" type="text/javascript"></script>
<!-- @endif -->
Và plugin grunt tôi sẽ trông như thế này:
env: {
dev: {
NODE_ENV: 'DEVELOPMENT'
},
prod: {
NODE_ENV: 'PRODUCTION'
},
release: {
NODE_ENV: 'RELEASE'
}
},
preprocess: {
options: {
context: {
name: '<%= pkg.outputName %>',
version: '<%= pkg.version %>',
port: '<%= pkg.port %>'
}
},
dev: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
},
prod: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
},
release: {
src: 'index.html',
dest: '<%= pkg.outputFolder %>/index.html'
}
},
Nhờ các plugin ngụm dữ liệu, điều này đã được đơn giản hóa rất nhiều. – user1167442