Jalankan skrip yang mengatur dan menggunakan variabel lingkungan di seluruh platform
Perhatikan: Cross-ENV masih berfungsi dengan baik, tetapi dalam mode pemeliharaan. Tidak ada fitur baru yang akan ditambahkan, hanya bug yang serius dan kasus umum yang akan diperbaiki, dan itu hanya akan tetap mutakhir dengan node.js dari waktu ke waktu. Pelajari lebih lanjut
Sebagian besar prompt perintah windows akan tersedak saat Anda mengatur variabel lingkungan dengan NODE_ENV=production seperti itu. (Pengecualian adalah bash pada Windows, yang menggunakan bash asli.) Demikian pula, ada perbedaan dalam bagaimana perintah Windows dan POSIX memanfaatkan variabel lingkungan. Dengan POSIX, Anda menggunakan: $ENV_VAR dan pada windows Anda menggunakan %ENV_VAR% .
cross-env membuatnya sehingga Anda dapat memiliki perintah tunggal tanpa khawatir tentang pengaturan atau menggunakan variabel lingkungan dengan benar untuk platform. Atur saja seperti yang Anda lakukan jika berjalan pada sistem POSIX, dan cross-env akan mengurusnya dengan benar.
cross-env vs cross-env-shell Modul ini didistribusikan melalui NPM yang dibundel dengan node dan harus diinstal sebagai salah satu devDependencies proyek Anda:
npm install --save-dev cross-env
PERINGATAN! Pastikan ketika Anda menginstal paket yang Anda eja dengan benar untuk menghindari penginstalan malware secara keliru
CATATAN: Versi 7 dari Cross-ENV hanya mendukung Node.js 10 dan lebih tinggi, untuk menggunakannya di Node.js 8 atau instalasi lebih rendah Versi 6
npm install --save-dev cross-env@6
Saya menggunakan ini di skrip NPM saya:
{
"scripts" : {
"build" : " cross-env NODE_ENV=production webpack --config build/webpack.config.js "
}
} Pada akhirnya, perintah yang dieksekusi (menggunakan cross-spawn ) adalah:
webpack --config build/webpack.config.js
Variabel lingkungan NODE_ENV akan ditetapkan oleh cross-env
Anda dapat mengatur beberapa variabel lingkungan sekaligus:
{
"scripts" : {
"build" : " cross-env FIRST_ENV=one SECOND_ENV=two node ./my-program "
}
}Anda juga dapat membagi perintah menjadi beberapa yang, atau memisahkan deklarasi variabel lingkungan dari eksekusi perintah yang sebenarnya. Anda bisa melakukannya dengan cara ini:
{
"scripts" : {
"parentScript" : " cross-env GREET= " Joe " npm run childScript " ,
"childScript" : " cross-env-shell " echo Hello $GREET " "
}
} Di mana childScript memegang perintah aktual untuk mengeksekusi dan parentScript menetapkan variabel lingkungan untuk digunakan. Kemudian alih -alih menjalankan naskah anak -anak Anda menjalankan orang tua. Ini cukup berguna untuk meluncurkan perintah yang sama dengan variabel Env yang berbeda atau ketika variabel lingkungan terlalu lama untuk memiliki segalanya dalam satu baris. Ini juga berarti bahwa Anda dapat menggunakan sintaks $GREET Env var bahkan pada jendela yang biasanya mengharuskannya untuk menjadi %GREET% .
Jika Anda mendahului tanda dolar dengan jumlah backslash ganjil, pernyataan ekspresi tidak akan diganti. Perhatikan bahwa ini berarti backslash setelah string JSON melarikan diri terjadi. "FOO=\$BAR" tidak akan diganti. "FOO=\\$BAR" akan diganti.
Terakhir, jika Anda ingin melewati string JSON (misalnya, saat menggunakan TS-Loader), Anda dapat melakukan sebagai berikut:
{
"scripts" : {
"test" : " cross-env TS_NODE_COMPILER_OPTIONS={ \" module \" : \" commonjs \" } node some_file.test.ts "
}
} Berikan perhatian khusus pada triple backslash (\) sebelum kutipan ganda (") dan tidak adanya kutipan tunggal (') . Kedua kondisi ini harus dipenuhi untuk bekerja baik di Windows maupun UNIX.
cross-env vs cross-env-shell Modul cross-env memaparkan dua tempat sampah: cross-env dan cross-env-shell . Yang pertama mengeksekusi perintah menggunakan cross-spawn , sedangkan yang kedua menggunakan opsi shell dari Node's spawn .
Kasing penggunaan utama untuk cross-env-shell adalah ketika Anda membutuhkan variabel lingkungan untuk diatur di seluruh skrip shell inline, bukan hanya satu perintah.
Misalnya, jika Anda ingin memiliki variabel lingkungan berlaku untuk beberapa perintah secara seri maka Anda perlu membungkusnya dalam kutipan dan menggunakan cross-env-shell alih-alih cross-env .
{
"scripts" : {
"greet" : " cross-env-shell GREETING=Hi NAME=Joe " echo $GREETING && echo $NAME " "
}
} Aturan praktisnya adalah: jika Anda ingin lulus untuk melakukan perintah cross-env yang berisi karakter shell khusus yang ingin Anda ditafsirkan , maka gunakan cross-env-shell . Jika tidak, tetap berpegang pada cross-env .
Pada jendela Anda perlu menggunakan cross-env-shell , jika Anda ingin menangani acara sinyal di dalam program Anda. Kasus umum untuk itu adalah ketika Anda ingin menangkap acara SIGINT yang dipanggil dengan menekan Ctrl + C pada antarmuka baris perintah.
Harap dicatat bahwa npm menggunakan cmd secara default dan itu tidak mendukung substitusi perintah, jadi jika Anda ingin memanfaatkannya, maka Anda perlu memperbarui .npmrc Anda untuk mengatur script-shell ke Powershell. Pelajari lebih lanjut di sini.
Awalnya saya membuat ini untuk memecahkan masalah yang saya alami dengan skrip NPM saya dengan bentuk sudut. Ini membuat berkontribusi pada proyek jauh lebih mudah bagi pengguna Windows.
env-cmd - Membaca Variabel Lingkungan dari sebuah file sebagai gantinya@naholyr/cross-env - cross-env dengan dukungan untuk menetapkan nilai default Ingin berkontribusi? Cari label edisi pertama yang bagus.
Harap ajukan masalah untuk bug, dokumentasi yang hilang, atau perilaku yang tidak terduga.
Lihat bug
Proyek ini dalam mode pemeliharaan dan tidak ada permintaan fitur baru yang akan dipertimbangkan.
Pelajari lebih lanjut
Terima kasih kepada orang -orang ini (Kunci Emoji):
Kent C. Dodds ? | Ya Zhuang ? | James Harris | compumike08 ? | Daniel Rodríguez Rivero ? | Jonas Keinholz ? | Hugo Wood ? |
Thiebaud Thomas ? | Daniel Rey López | Amila Welihinda ? | Paul Betts ? | Turner Hayes ? | Suhas Karanth | Sven |
D. Nicolás Lopez Zelaya | Johan Hernandez | Jordan Nielson ? | Jason Cooke | Bibo5088 | Eric Berry ? | Michaël de Boey |
Lauri Eskola | devuxer | Daniel |
Proyek ini mengikuti spesifikasi semua-kontributor. Kontribusi apa pun yang baik!
Catatan: Ini ditambahkan terlambat ke dalam proyek. Jika Anda telah berkontribusi pada proyek ini dengan cara apa pun, silakan buat permintaan tarik untuk menambahkan diri Anda ke daftar dengan mengikuti instruksi di
CONTRIBUTING.md
Mit