精华内容
下载资源
问答
  • 把node文件拷贝写成npm包,并发布 npm插件发布 发布npm其实是一件很简单的事情,只是因为长时间不发布会忘记,又得上网去查一下,所以就写篇文章记录一下 新建文件目录 新建目录,取名任意 运行命令生成package....

    前言

    把node文件拷贝写成npm包,并发布

    npm插件发布

    发布npm其实是一件很简单的事情,只是因为长时间不发布会忘记,又得上网去查一下,所以就写篇文章记录一下

    新建文件目录

    • 新建目录,取名任意
    • 运行命令生成package.json
    npm init --yes
    

    安装依赖

    如果项目中还需要其他依赖,可以向正常开发时一样通过npm install xxx安装
    不过这里有一点需要注意的是,-S--save--save-dev的区别,因为通常在开发项目的时候这三个是没有什么本质区别的,但是在开发npm包的还是有区别的

    • -S--save下载的插件会被写入dependencies,并且我们在安装自定义的插件时,会一块被下载
    • --save-dev下载的插件会被写入devDendencies,这个只是在开发的时候使用,并不会随着自定义插件一块被安装

    完善package.json

    有几个重要的信息是一定要填写的

    • name 别人安装这个插件需要通过 npm install xxx,来安装这个xxx对应的是namevalue
    • version 插件的版本,每次重新发布都需要重新这个版本后,不然发布会失败
    • main 入口文件
      其他可以看需要填写
    {
    "name": "node-fs-copy", //发布的包名,默认是上级文件夹名。不得与现在npm中的包名重复。包名不能有大写字母/空格/下滑线!
      "version": "1.0.0",//你这个包的版本,默认是1.0.0。对于npm包的版本号有着一系列的规则,模块的版本号采用X.Y.Z的格式,具体体现为:
      1、修复bug,小改动,增加z。
      2、增加新特性,可向后兼容,增加y
      3、有很大的改动,无法向下兼容,增加x
      "description": "",
      "main": "index.js",//入口文件,默认是Index.js,可以修改成自己的文件,这个很重要,当你在实际项目使用的时候,let a = require("包名"),它就去会去找对应的文件路径哦。
      "scripts": {                  // 快捷命令,在package.json同目录下输入命令 npm run 键 就会执行 相对应的命令
        "bulid": "npx webpack --config myConfig.js"  //例如 输入 npm run bulid 就会执行npx webpack --config myConfig.js的命令 。
      },
      "keywords": [ // npm搜索的关键字
         "node",
         "fs",
         "copy"
      ],
      "publishConfig": {
        "registry": "" // 发布的npm地址
      },
      "repository": {
          "type": "git",
          "url": "git+https://github.com/xxxx" // 代码的git地址
      },
      "author": "zxw",
      "license": "ISC",//这个直接回车,开源文件协议吧,也可以是MIT,看需要吧。
      "dependencies": {             // 生产环境所依赖的包
        "jquery": "^3.4.1",
        "sea": "^1.0.2"
      },
      "devDependencies": {          // 开发环境所依赖的包
        "webpack": "^4.41.6"
      }
    }
    

    确定入口文件为index.js之后,并写入代码,注意引入和导出都需要通过node的方式

    • index.js
    const { exists, copyDir} = require('./lib/copy')
    
    const fsCopy = (sourcePath, deptPath)=> {
      exists(sourcePath,deptPath, copyDir)
    }
    
    module.exports = {
      fsCopy
    }
    
    • /lib/copy.js
    const fs = require('fs')
    
    /**
     * 复制一个文件夹下的文件到另一个文件夹
     * @param src 源文件夹,即需要写出的文件
     * @param dst 目标文件夹,需要写入的文件
     */
    const copyDir = function (src, dst) {
      // 读取目录中的所有文件/目录
      fs.readdir(src, function (err, paths) {
        if (err) {
          throw err
        }
        paths.forEach(function (path) {
          const _src = src + '/' + path
          const _dst = dst + '/' + path
          let readable;
          let writable
          fs.stat(_src, function (err, st) {
            if (err) {
              throw err
            }
            // 判断是否为文件
            if (st.isFile()) {
              // 创建读取流
              readable = fs.createReadStream(_src)
              // 创建写入流
              writable = fs.createWriteStream(_dst)
              // 通过管道来传输流
              readable.pipe(writable)
            }
            // 如果是目录则递归调用自身
            else if (st.isDirectory()) {
              exists(_src, _dst, copyDir)
            }
          })
        })
      })
    }
    /*
    * 判断当前目标文件是否存在
    * 如若不存在需要先进行创建
    * */
    const exists = function (src, dst, callback) {
      // 如果路径存在,则返回 true,否则返回 false。
      if (fs.existsSync(dst)) {
        callback(src, dst)
      } else {
        fs.mkdir(dst, function () {
          callback(src, dst)
        })
      }
    }
    
    module.exports = {
      exists,
      copyDir
    }
    

    测试

    这一块我只是进行了比较简单的测试,后续我会专门补一章关于插件测试的文章

    发布

    • 注册npm账号,通常npm可以通过关联gitlab直接登录
    • 确定你当前的镜像指向npm镜像而不是淘宝镜像,如果不确定可以直接执行
    npm config set registry https://registry.npmjs.org/
    
    • 运行添加用户命令,依次输入用户,密码,邮箱。
    npm addUser
    

    addUser.png.png

    • 确保当前npm已经在浏览器登录情况下执行发布命令
    npm publish
    

    2089720a305dac8995cb940c8780fb7.png
    如图就是发布成功了

    发布报错

    如果发布遇到403报错,很有可能是你的包名即package.json里面的name字段与npm已经有的插件名重复了,需要修改一下再重新发布

    修改过名字依然报错, You cannot publish over the previously published versions: xxx,说明这个版本已经在npm存在,需要修改版本号

    迭代

    后续内容如果有变动,每次重新发布的时候,都需要手动的更改package.json/version的版本号,然后在执行发布的命令

    使用示例

    安装

    npm install node-fs-copy
    

    在node代码中,本地拷贝测试

    const { fsCopy } = require('node-fs-copy')
    // 把内容从本地D盘的test/test目录,拷贝到test/test1目录
    fsCopy('d:/test/test', 'd:/test/test1')
    

    服务器代码拷贝

    本地是没有办法直接拷贝服务器代码的,如果需要拷贝服务器代码,需要满足一个条件

    • node服务端代码,与需要拷贝的文件在一个服务器上
      比如作者的的服务器上的文件地址为/data/code-generator,node服务也部署在同一服务器的另一个目录内
    //在服务器上运行,表示把服务器的/data/code-generator文件内的内容,拷贝到当前项目的./temporary/test内
    fsCopy('/data/code-generator', './temporary/test')
    

    完成拷贝后,可以使用打包插件把该内容压缩成zip包,输出到前端,然后删除该临时文件./temporary/test,再删除zip包

    附上常用命令

    npm init --yes(初始化配置)
    
    npm i (会根据package.json里面的键dependencies,devDependencies来安装相对应的包)
    
    npm i (默认安装一个最新的包,这个包在node_modules文件夹里面,并且会更新在你的package.json文件)
    
    npm i 包@3.0.0(安装一个指定版本的包,会更新在你的package.json文件)
    
    npm i 包 --save-dev(安装一个开发环境所需要的包,会更新在你的package.json文件)
    
    npm uninstall 包(卸载一个包,会更新在你的package.json文件)
    
    npm update (更新此包版本为最新版本,会更新在你的package.json文件)
    
    npm run 脚本键(会根据package.json里面的"scripts"里面的脚本键自动执行相对于的值)
    
    npm publish  (根据package.json的name发布一个包)
    
    npm unpublish 包名 --force(卸载npm网站上自己上传的包)
    
    展开全文
  • 我这里选择的是最新版2、下载完了就直接双击安装,安装过程中可以另外指定安装路径,我的安装路径是E:\FRONT\nodejs3、安装完成之后进入cmd命令行,然后输入 node -v 测试...4、npm的安装,由于新版的nodejs已经集成了n

    1、首先我们要到nodejs官网(https://nodejs.org)上下载node,选择一个自己喜欢的版本下载。我这里选择的是最新版

    下载提示

    2、下载完了就直接双击安装,安装过程中可以另外指定安装路径,我的安装路径是E:\FRONT\nodejs

    3、安装完成之后进入cmd命令行,然后输入 node -v 测试是否安装成功,出现版本号就表示安装成功,如图:

    安装成功提示

    4、npm的安装,由于新版的nodejs已经集成了npm,所以之前安装node的时候npm也连带装好了。在命令行中输入 npm -v 来测试是否已经成功安装npm,出现版本号就表示成功安装了。

    npm安装成功提示

    5、下面我们来进行npm全局模块的存放路径以及cache的路径的配置,这些路径默认是在 C 盘的,我觉得这样会增加系统盘的负担,所以我希望将以上两个文件放在nodejs的主目录下,因此我在nodejs目录下也就是我的安装目录下建立了”node_gobal”和”node_cache”两个文件夹,如下图:

    建立两个文件夹

    6、进入cmd命令行,输入一下的命令设置全局模块的安装路径到node_gobal文件夹,缓存到node_cache文件夹:

    npm config set prefix "E:\FRONT\nodejs\node_gobal"
    npm config set cache "E:\FRONT\nodejs\node_cache"

    设置路径

    7、现在我们来装一个模块来测试一下,我选择的模块是cordova,你也可以选择express模块。进入cmd命令行输入 npm install -g cordova (“-g”表示装到global目录下,也就是刚才设置“E:\FRONT\nodejs\node_gobal”目录下)。等到安装完成时,会出现提示“cordova”安装的目录,以此验证是否设置成功。

    安装测试模块

    8、由于node全局模块大多数都是可以通过命令行访问的,所以还要把“E:\FRONT\nodejs\node_gobal”加入到系统PATH中,方便直接使用命令行运行。

    将模块路径加入到path中

    总结:这样配置之后我们如果把自己电脑上的nodejs文件拷贝到其他的电脑上,然后在那台机器上配置下环境变量就可以使用node、以及以前自己安装过的模块,这样就极其方便了。

    最后大家有什么问题可以留言,大家共同探讨

    展开全文
  • 配置域名是需要吧XXX.txt文件配置在根目录 提供域名www.aaa.com/xxx.txt直接访问 实现如下: 每次打包自动把public 下的MPXXX复制到 dist/build/h5 目录下 因为你每次打包都会重置这个目录 所以就有了上述需求 ps:...

    这个需求背景是 因为做一个平台系统 (公众号H5部分的)
    平台配置了X个商家,在配置商家时有微信公众号以及支付,
    配置域名是需要吧XXX.txt文件配置在根目录 提供域名www.aaa.com/xxx.txt直接访问
    实现如下:
    每次打包自动把public 下的MPXXX复制到 dist/build/h5 目录下 因为你每次打包都会重置这个目录 所以就有了上述需求

    ps:哪些需要在index.html 引用了某些资源文件 如cs 或js报 404 nofound 这个错误的同样适用。
    在这里插入图片描述
    如下 是实现 方式
    本人使用npm方式 --》

    npm install  copy-webpack-plugin --save
    

    在根目录配置 vue.config.js

    在这里插入图片描述

    vue.config.js 内容如下

    const CopyWebpackPlugin = require('copy-webpack-plugin')
    
    module.exports = {
    	 configureWebpack: {
    	plugins: [
    		new CopyWebpackPlugin([{
    			//复制的源文件位置
    			from: './public/MP_verify_d2w0uvCs5w1XCcC5.txt',
    			to: ''  
    			//复制后目标的位置 默认是打包后的根目录我这里忽略不写
    		}]),
    	],
    	}
    };
    

    参考参数

    from  定义要拷贝的源文件            from:__dirname+'/src/components'
    to      定义要拷贝到的目标文件夹  to: __dirname+'/dist'
    toType  file 或者 dir                        可选,默认是文件
    force   强制覆盖前面的插件            可选,默认是文件
    context                                            可选,默认base   context可用specific  context
    flatten  只拷贝指定的文件               可以用模糊匹配
    ignore  忽略拷贝指定的文件            可以模糊匹配
    

    –end–

    展开全文
  • 这是将文件从依赖服务器(文件系统中的另一个目录)复制到本地项目以构建项目的扩展。 如果您想使用 npm 作为,例如构建 Java 应用程序,这将非常有用。 一般用途 为了使用这个脚本,在你的package.json文件中创建...
  • nodejs 拷贝目录下所有文件 目录

    万次阅读 2018-12-20 16:57:26
    var fs=require('fs'); var copy=function(src,dst){ let paths = fs.readdirSync(src); //同步读取当前目录 paths.forEach(function(path){ var _src=src+'/'+path; var _dst=dst+'/'+path; ...
    var fs=require('fs');
    var copy=function(src,dst){
        let paths = fs.readdirSync(src); //同步读取当前目录
        paths.forEach(function(path){
            var _src=src+'/'+path;
            var _dst=dst+'/'+path;
            fs.stat(_src,function(err,stats){  //stats  该对象 包含文件属性
                if(err)throw err;
                if(stats.isFile()){ //如果是个文件则拷贝 
                    let  readable=fs.createReadStream(_src);//创建读取流
                    let  writable=fs.createWriteStream(_dst);//创建写入流
                    readable.pipe(writable);
                }else if(stats.isDirectory()){ //是目录则 递归 
                    checkDirectory(_src,_dst,copy);
                }
            });
        });
    }
    var checkDirectory=function(src,dst,callback){
        fs.access(dst, fs.constants.F_OK, (err) => {
            if(err){
                fs.mkdirSync(dst);
                callback(src,dst);
            }else{
                callback(src,dst);
            }
          });
    };
    
    const   SOURCES_DIRECTORY = 'd:commonPrefab';  //源目录
    checkDirectory(SOURCES_DIRECTORY,__dirname,copy);
    
    

     

    展开全文
  • 使用 Vue-cli 创建的项目,当文件移动到其他目录后,无法正常启动,报错信息如下:   分析原因: npm 项目,在安装依赖(node_modules)的时候,会记录当前的文件路径。当路径更改,就无法正常启动。 ...
  • npm

    2021-03-01 17:41:10
    npm: 定义:node.js 自带的包(插件,库)文件管理器 安装:1.安装node.js 查看:window+r 输入cmd node -v 查看node版本 ...目录中会出现一个package.json 包配置文件 安装包: 安装 :npm i + 包名 安装多个: npm i
  • NPM

    2019-09-10 16:56:56
    npm --> node.js package manage(node.js 包管理器) npm install xxx 下载安装第三方模块到当前文件夹的 node_modules 文件夹中 npm install -g xxx 全局下下载安装模块 npm install --save 下载安装第三方...
  • 使用node完成文件自动拷贝

    千次阅读 2018-08-08 17:16:33
    适用于项目中某些文件需要手动拷贝重命名场景; 新建copy.js内容如下; node执行,缺少module就安装相关module; 执行完成xxx1.js复制到xxx2目录重命名为xxx2.js; var fs = require("fs"); //动态路径...
  • 这些天自己在用vue-cli项目,在家里的电脑下下来后写了一些demo,拿到公司继续开发的时候发现删除node_modules文件,运行npm install和npm run  百度,搜狗了好久都没有找到相应的答案,后来还是google才找到一片...
  • 先介绍一下npm npm 是node的包管理工具, 它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。 来自各大洲的开源软件开发者使用 npm 互相分享和借鉴...
  • 我现在安装了两个node版本 v10.15.3代表10.15.3版本,打开后 v12.16.2代表node版本12.16.2,打开后 ...需要把文件npm, npm.cmd和node_modules三个文件拷贝到v12.16.2文件的相应目录下即可使用。 ...
  • 这些天自己在用vue-cli项目,在家里的电脑下下来后写了一些demo,拿到公司继续开发的时候发现删除node_modules文件,运行npm install和npm run 百度,搜狗了好久都没有找到相应的答案,后来还是google才找到一片...
  • npm-repository npm repository proxy 用于npm本地代理或者内网仓库,仅支持npm install命令。...1、将npm-repository-0.0.1-SNAPSHOT.jar和同级目录生成的repository仓库文件一同拷贝到内网环境中,部署运行 2、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,197
精华内容 6,478
关键字:

npm文件目录拷贝