2.Node相关工具1.NVM:NodeVersionManagerSwitchnodeversion1.1Macinstallnvmhttps://github.com/nvm-sh/nvm...2.NPM:NodePackageManager2.1全局安装包$npminstallforever--global(-g)$forever$npmuninstallforever--global$forever2.2本地安装包$cd~/desktop$mkdirgp-project$cdgp-project$npminstallunderscore$npmlist(ls)2.3package.jsoninit$pwd$npminit-y$ls$catpackage.json2.4使用package.json$npminstallunderscore--save$catpackage.json$npm安装lodash--save-dev$catpackage.json$rm-rfnode_modules$ls$npminstall$npmuninstallunderscore--save$npmlist|grepunderscore$catpackage.json2.5安装指定版本的包$pwd$npmlist$npminfounderscore$npm查看underscoreversions$npminstallunderscore@1.8.0$npmlist$npmuninstallunderscore$npmlist2.6更新本地安装的包$npminfounderscore$npmviewunderscoreversions$npminstallunderscore@1.4.4--save-dev$npmlist|grepgulp$npmoutdated//~2.0.0表示补丁,^2.0.0表示最小值或者*表示最新版本的xx$npmlist|grepgulp$npmupdate2.7清除缓存npmcacheclean--force2.8上传自己的包2.8.1编写模块并保存为index.jsexports.sayHello=function(){return'HelloWorld';}2.8.2初始化包描述文件$npminitpackage.json{"name":"gp19-npm","version":"1.0.1","description":"gp19selfmodule","main":"index.js","scripts":{"test":"maketest"},"repository":{"type":"Git","url":"git+https://github.com/lurongtao/gp19-npm.git"},"keywords":["demo"],"author":"Felixlu","license":"ISC","bugs":{"url":"https://github.com/lurongtao/gp19-npm/issues"},"homepage":"https://github.com/lurongtao/gp19-npm#readme",}2.8.3注册npm仓库账号https://www.npmjs。com上面账号felix_lurt/qqmko09ijn$npmadduser2.8.4uploadpackage$npmpublishpit:403Forbidden查看npmsource:npmconfiggetregistryswitchnpmsource方法一:npmconfigsetregistryhttp://registry.npmjs.orgswitchnpmsource方法二:nrm使用npm2.8.5安装包$npminstallgp19-npm2.8.6uninstallpackage查看当前项目引用了哪些包:npmlsuninstallpackage:npmunpublish--force2.8.7使用importpackagevarhello=require('gp19-npm')hello.sayHello()2.9npmscriptnode开发离不开npm,而script功能是npm最强大也是最常用的功能之一1.什么是npm脚本?npm允许使用scripts字段在package.json文件中定义脚本命令。{//..."scripts":{"build":"nodebuild.js"}}2.执行顺序如果npm脚本中需要执行多个任务,那么需要指定它们的执行顺序。script1.jsvarx=0console.log(x)script2.jsvary=0console.log(y)"scripts":{"script1":"nodescript1.js","script2":"nodescript2.js"}如果是并行执行(即同时并行执行),可以使用&符号。$npmrunscript1&npmrunscript2如果是二次执行(即只有上一个任务成功才会执行下一个任务),可以使用&&符号。$npmrunscript1&&npmrunscript23.缩写npmscripts常用的缩写。npmstart即npmrunstart4.变量npm脚本有一个非常强大的功能,就是可以使用npm的内部变量。首先,通过npm_package_前缀,npm脚本可以获取到package.json中的字段。比如下面是一个package.json。注意:必须在npm脚本中运行(如:npmrunview)。直接在命令行运行JS(如:nodeview.js)不会得到值{"name":"foo","version":"1.2.5","scripts":{"view":"nodeview.js"}}然后,变量npm_package_name返回foo,变量npm_package_version返回1.2.5。//view.jsconsole.log(process.env.npm_package_name);//fooconsole.log(process.env.npm_package_version);//1.2.5在上面的代码中,我们通过环境变量process.env对象来获取包。json的字段值。如果是Bash脚本,可以使用$npm_package_name和$npm_package_version来获取这两个值。Npmpackage前缀还支持嵌套的package.json字段。"repository":{"type":"git","url":"xxx"},scripts:{"view":"echo$npm_package_repository_type"}上面代码中可以获取repository字段的type属性通过npm_package_repository_type。这是另一个例子。"scripts":{"install":"foo.js"}在上面的代码中,npm_package_scripts_install变量的值等于foo.js。然后,npm脚本也可以通过npmconfig前缀获取npm配置变量,即npmconfiggetxxx命令返回的值。例如可以通过npm_config_tag获取当前模块的releasetag。"view":"echo$npm_config_tag",注意package.json中的config对象可以被环境变量覆盖。{"name":"foo","config":{"port":"8080"},"scripts":{"start":"nodeserver.js"}}在上面的代码中,npm_package_config_port变量返回8080.可以使用以下方法覆盖此值。$npmconfigsetfoo:port80最后,env命令可以列出所有的环境变量。"env":"env"2.10npm安装发布在git上的包,适用于在公司内部git服务器上安装项目npminstallgit+https://git@github.com:lurong...或npm的形式ofsshinstallgit+ssh://git@github.com:lurongtao/gp-project.git2.11cross-env使用2.11.1cross-env运行设置和使用环境变量的跨平台脚??本是什么原因2.11.2当你设置环境变量NODE_ENV=production时,大多数Windows命令提示符都会阻塞(报错)。(Windows上的Bash除外,它使用本机Bash。)换句话说,Windows不支持设置NODE_ENV=production的方式。2.11.3解决cross-env允许您使用单个命令而无需担心为您的平台正确设置或使用环境变量。这个mini-package(cross-env)提供了设置环境变量的脚本,可以让你以Unix方式设置环境变量,然后在Windows上兼容运行。2.11.4安装npminstall--save-devcross-env2.11.5使用{"scripts":{"build":"cross-envNODE_ENV=productionwebpack--configbuild/webpack.config.js"}}NODE_ENV环境变量将由cross-envprintprocess.env.NODE_ENV==='production'设置
