找了一个很好用的工具,在公司内部写了一个loader工具,但是别人发现不能用;原来在package.json的scripts中设置了NODE_ENV=production,windows下不能这样设置环境变量,cross-env就是为了屏蔽这种问题在不同平台的差异;附上一个css-loader的package.json文件,css-loader中使用了cross-env的工具:{"name":"css-loader","version":"3.2.1","description":"webpack的css加载器模块”,“license”:“MIT”,“repository”:“webpack-contrib/css-loader”,“author”:“TobiasKoppers@sokra”,“homepage”:“https://github.com/webpack-contrib/css-loader","bugs":"https://github.com/webpack-contrib/css-loader/issues","main":"dist/cjs.js","engines"":{"node":">=8.9.0"},"scripts":{"start":"npmrunbuild---w","prebuild":"npmrunclean","build":"跨环境NODE_ENV=productionbabelsrc-ddist--ignore\"src/**/*.test.js\"--copy-files","validate:runtime":"es-checkes5\"dist/runtime/**/*.js\"","postbuild":"npmrunvalidate:runtime","clean":"del-clidist","commitlint":"commitlint--from=master","lint:漂亮tier":"prettier\"{**/*,*}.{js,json,md,yml,css}\"--list-different","lint:js":"eslint--cachesrctest","lint":"npm-run-all-l-p\"lint:**\"","prepare":"npmrunbuild","release":"standard-version","security":"npmaudit","test:only":"cross-envNODE_ENV=testjest","test:watch":"cross-envNODE_ENV=testjest--watch","test:coverage":"cross-envNODE_ENV=testjest--collectCoverageFrom=\"src/**/*.js\"--coverage","pretest":"npmrunlint","test":"cross-envNODE_ENV=testnpmruntest:coverage","defaults":"webpack-defaults"},"files":["dist/","lib/","index.js"],"peerDependencies":{"webpack":"^4.0.0"},"dependencies":{"camelcase":"^5.3.1","cssesc":"^3.0.0","icss-utils":"^4.1.1","loader-utils":"^1.2.3","normalize-path":"^3.0.0","postcss":"^7.0.17","postcss-modules-extract-imports":"^2.0.0","postcss-modules-默认本地":"^3.0.2","postcss-modules-scope":"^2.1.0","postcss-modules-values":"^3.0.0","postcss-value-parser":"^4.0.0","schema-utils":"^2.0.0"},"devDependencies":{"@babel/cli":"^7.5.0","@babel/core":"^7.5.4","@babel/preset-env":"^7.5.4","@commitlint/cli":"^8.1.0","@commitlint/config-conventional":"^8.1.0","@webpack-contrib/defaults":"^5.0.2","@webpack-contrib/eslint-config-webpack":"^3.0.0","babel-jest":"^24.8.0","commitlint-azure-pipelines-cli":"^1.0.2","cross-env":"^5.2.0","del":"^5.0.0","del-cli":"^2.0.0","es-check":"^5.0.0","eslint":"^6.1.0","eslint-config-prettier":"^6.0.0","eslint-plugin-import":"^2.18.0","file-loader":"^4.0.0","husky":"^3.0.0","jest":"^24.8.0","jest-junit":"^7.0.0","lint-staged":"^9.2.0","memory-fs":"^0.4.1","npm-run-all":"^4.1.5","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","prettier":"^1.18.2","sass":"^1.22.5","sass-loader":"^7.1.0","标准版":"^7.0.0","strip-ansi":"^5.2.0","webpack":"^4.35.0"},"keywords":["webpack","css","loader","url","import"]}可以查看到命令:"cross-envNODE_ENV=productionbabelsrc-ddist--ignore'src/*/.test.js'--copy-files"我们知道npmscripts其实是创建了一个shell,设置在这个shell中如果设置了环境变量NODE_ENV,那么在nodejs程序中,process.env.NODE_ENV=="production",这个工具的好处是解决了跨平台的问题,详细使用参考https://www.npmjs。com/package/cross-env
