1、介绍
最近有同学问我,怎么在不联网的情况下安装依赖。一般我们开发都是有网的,那么配置一下register一下镜像路径就可以从国内的阿里云,淘宝,华为云,腾讯云等国内镜像文件。
有些同学开发项目会在内网开发,所以就需要离线去npm install一些依赖。
2、非联网/离线安装方法
—2.1搭建内网私服
我先通过一台电脑搭建一个内网服务,verdaccio是一个轻量级的私有npm代理注册服务
//先安装一个代理服务 npm install -g verdaccio //运行 verdaccio //运行后的默认端口是4873,此时我们就可以设置镜像路径为这个代理地址 npm set registry http://localhost:4873/ //其他需求,如果你想要发布资源,推送到这个地址 npm publish --registry http://localhost:4873/ //项目成员安装依赖 npm install <package> --registry http://localhost:4873/ //也可以在项目中创建一个.npmrc文件 registry=http://localhost:4873/
—2.2npm pack 归档文件
重点讲一下这个方法
思路:首先我们用一台电脑,联网状态,去把所有依赖全部安装好,然后通过代码打成压缩包,拷贝到指定目录下
跟随潮流,同ts来吧,基础的创建项目啥的就不说了,讲重点
创建完项目后,如果需要用到ts,就执行这个命令tsc --init去创建一个tsconfig.json文件,在这个文件中将module:""设置为commonjs,即module:“commonjs”,这里涉及到.js,.cjs,.mjs几种后缀的知识点,有机会再讲。。。
这里为什么要用commonjs,因为我们在编写代码的时候,是用的esm,esm不支持__dirname,__dirname只能在cjs中使用,后面我们编译出来就是cjs
我用去新建一个index.ts文件
import { exesync } from 'node:child-process'
import fs from 'node:fs'
import path from 'node:path'
//存放我们打包后的文件目录
const packagedir = path.join(__dirname, './packages')
//存在则不需要重复打包
if(!fs.existssync(packagedir)){
fs.mkdirsync(packagedir, {recursive: true})
}
//读取node_modules文件目录下的文件
const node_modules = path.join(__dirname, './node_modules')
function buildpackage() {
const dirfilelist = fs.readdirsync(node_modules ).filter(dit => {
//排除.开头文件和@符号开头文件,其他请自行排除
return !(dirfilelist .startwith('.') || dirfilelist .startwith('@'))
})
//遍历所查询到的文件
dirfilelist && dirfilelist .map(dir => {
//拿到文件的完整路径,后续打包路径
const modules = path.join(node_modules, dir)
//打包命令,需要引用,在第一行
exesync('npm pack', { cwd: modules })
//将打包完的tgz文件找到
const tgzfile = fs.readdirsync(modules).find(file => {
return file.endswith('.tgz')
})
if(tgzfile){
//将找到的打包tgz文件移动到指定的package目录中
fs.renamesync(path.join(modules,tgzfile), path.join(packagedir,tgzfile))
}
})
}
//执行
buildpackage()
//安装命令
npm install ./packages/xxxx.tgz
—2.3u盘拷贝
这个就不多说了
总结
到此这篇关于前端内网开发npm安装的几种方法的文章就介绍到这了,更多相关前端内网npm安装内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论