当前位置: 首页 > 后端技术 > Node.js

补充5——工程补充

时间:2023-04-03 23:30:39 Node.js

npxnpx是npm5.2版本后附加的命令,npx可以解决项目开发过程中的问题。避免全局安装模块。npm不提倡全局安装模块。全局安装会导致一些问题。主要问题如下:全局安装的模块将存储在本地全局目录中。随着全局模块数量的增加,占用的空间也会增加。全局模块安装后,发布新版本模块时,需要手动更新模块。如果在项目中使用全局模块,会导致项目与本地模块关联,即如果别人使用了项目,则需要手动安装所有依赖的全局模块,而不是通过安装所有依赖模块一个简单的npm安装。使用npx命令可以避免这个问题,它可以远程执行命令。即npx会将你使用的模块下载并安装到本地的一个临时目录中,使用完后会删除临时目录中的模块。比如安装vue项目,使用npm安装需要两步:安装脚手架工具npminstall-g@vue/cli。使用脚手架工具创建项目vuecreatemy-vue-app使用npx:执行npm@vue/clicreatemy-vue-app创建项目。调用项目安装模块如果项目中安装了一个模块,比如npminstall--save-devgrunt,npm不能直接调用这个模块。如果要调用,可以使用以下两种方式:将grunt命令添加到npmscripts中。从命令行运行node_modules/.bin/grunt--version调用。如果使用npx命令,那么npx会自动去node_modules/.bin路径和环境变量$PATH中检查命令是否存在,所以直接执行npxgrunt--version调用模块。gh-pages使用github提供的gh-pages分支快速发布自己的静态项目。发布静态项目的步骤:gitclone复制托管在github上的项目。安装依赖项并打包项目。创建一个gh-pages分支,将dist目录下的文件推送到该分支。完成以上三个步骤后,静态项目的发布就完成了,可以通过特定的url访问静态项目。githubactions在github中,抓取代码、运行测试、发布到第三方服务等持续集成中的每一步都称为一个action。持续集成是由多个动作共同完成的。Workflow工作流:表示一个持续集成从开始到结束的运行过程。工作任务:表示在持续集成过程中需要完成的任务,一次持续集成可以完成多个任务。步骤step:一个任务可以有多个步骤,这些步骤是顺序执行的。action动作:每个步骤包含多个动作。下面的例子是在github项目中添加一个基本动作。每次更新代码时,会自动构建并将dist目录下的文件推送到gh-pages分支。#构建工作流名称name:publishvueproject#定义何时自动构建:push:branches:[master]pull_request:branches:[master]#定义构建任务jobs:#任务名称build:#Buildertyperuns-on:ubuntu-latest#Stepssteps:#拉主分支-uses:actions/checkout@master-name:buildandpublish#使用成熟的动作执行构建任务uses:JamesIves/github-pages-deploy-action@masterenv:ACCESS_TOKEN:${{secrets.test}}BRANCH:gh-pagesFOLDER:distBUILD_SCRIPT:npminstall&&npmrunbuildnpmscriptsnpm允许通过package.json中的脚本字段定义脚本命令。如下:"scripts":{"test":"echo\"thisisatest\""}在命令行执行npmruntest,输出thisisatest。调用模块命令npmscript命令在运行时会自动将node_modules/.bin目录临时添加到PATH环境变量中,因此可以通过script命令调用安装模块的命令。如果在项目中通过npminstall--save-dev-grunt安装模块,那么在scripts脚本中,可以直接调用模块提供的grunt命令:"scripts":{"test":"grunt--version"}执行顺序可以通过&和&&&并行定义脚本命令中多个任务的执行顺序execute"scripts":{"test":"node./test1.js&node./test2.js"}表示node./test1.js和node./test2.js两个任务会同时执行。&&按顺序执行"scripts":{"test":"node./test1.js&&node./test2.js"}意思是node./test1.js和node./test2.js的两个task会依次执行。Hookprepostnpm为脚本命令提供了两个hook:pre和post,即如果在scripts字段中定义了pretest、test、posttest三个命令,那么在执行npmruntest命令时,npm会先执行pretest命令,然后执行test命令,最后执行posttest命令。获取变量你可以通过npmscript命令中的npm_package_前缀来获取package.json中的变量。如package.json:{"name":"npm-scripts","version":"1.0.0","description":"","main":"index.js","keywords":[],"author":"","license":"ISC"}intest.jsscript:console.log(process.env.npm_package_name)inscriptcommand:"scripts":{"test":"nodetest.js",}运行命令时,可以在控制台输出package.json中name字段的值。识别命令可以通过npm脚本中的npm_lifecycle_event返回当前运行脚本的名称。test.js脚本中:console.log(process.env.npm_lifecycle_event)脚本命令中:"scripts":{"test":"nodetest.js",}运行命令时,可以输出到console当前正在执行的命令测试。