使用Windows中的cmd和powershell都能够正常使用node环境变量,但是发现对于vscode,使用vscode中嵌套的终端倒不是很行,使用时报错如下:
解决方法:将node.exe复制到C:\Users\Administrator\AppData\Roaming\npm目录下面,其实node本来是配置了环境变量的,配置使用node只能利用windows提供的cmd就显得有点麻烦(可能是vscode的bug)。需要注意的是这种操作可能导致nvm对于node的管理失效,毕竟nvm在安装的时候node的位置是已经确定的,当然整体上来说node版本切换用的不是很频繁,所以可以这样将就一下,在涉及到node版本问题的时候先执行一下node -v。
对于package.json文件中的scripts自定义脚本来说,其实像dev,build这些自定义的脚本支持同步和异步执行,举例如下:
npm自定义脚本时,如果使用&&连接两个不同的任务那么这两个任务将是同步执行的,如果使用&连接两个不同的任务那么这两个任务将会是异步执行的。另外npm 脚本具有默认的识别功能,比如npm run test|start这两种自定义脚本中间的run可以省略。说实话,我拿着大佬的思路(https://blog.csdn.net/weixin_33922672/article/details/91372776)跑一下还是同步的,只能说存疑。代码与思路如下:
//test01.js: console.log("start index1"); setTimeout(() => {console.log("end index1");}, 6000);
//test02.js: console.log("start index2"); setTimeout(() => {console.log("end index2");}, 3000);
如果是同步的话,那么将会打印:start index1,start index2,end index2,end index1。但是实际还是按照固定的顺序输出的。
我们发现在package.json文件里面有很多参数,像版本号等信息可能我们需要在程序中使用,对应的使用方法如下:
console.log(process.env.npm_package_name);(直接使用process.env能过获取到很多其他的文件路径信息),对于package.json里面的参数需要利用npm_package_(具体的参数名)实现获取。也可以在package.json中自定义字段。但是需要注意的是:
1.访问字段的时候只能详细获取某个值而不能是对象,否则直接undefined。
2.如果想要在package.json文件中访问文件目录下的内容,那么可以使用$npm_package_(具体的参数名),真机测试没有效果
能够使程序既能够运行在Linux系统上,又能够运行在windows系统上,,使用方式为,npm i cross-env,然后在每一个scripts脚本前面加上cross-env。
这样就能够区分不同的生产模式,然后分开书写对应的逻辑了。
NRM主要用于切换国外的镜像源,方便我们更快地下载需要的依赖,使用方式:先使用 npm i nrm安装,然后可以使用nrm test查看镜像源的连接速度,还可以使用nrm use 快速切换镜像源,就不用输入 npm config set registry http://registry.npm.taobao.org 了
前面我们使用npm 局部安装gulp,之后切换文件目录执行gulp -v发现失效,解决方法除了再次安装或者全局安装,修改scripts脚本利用脚本来帮助我们识别。 还可以直接使用npx gulp-v,实现的原理是,扫描gulp依赖,如果没有gulp依赖,那么会从源上下载到一个临时文件夹中,等使用完成之后便会删除该依赖。(换句话说,不会污染使用到的依赖环境)。
需要注意的是npx有两种参数:--no-install(强制npx不去下载依赖,只能够使用本地依赖,如果本地依赖不存在,那么直接报错),--ignore-existing(强制使用源上面的依赖,忽略本地已经存在的依赖)。