博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现 node_modules 共享
阅读量:6836 次
发布时间:2019-06-26

本文共 1508 字,大约阅读时间需要 5 分钟。

 

参考:

 

Gruntjs 作为前端工程化工具,能够很好的对前端资源进行管理(校验,合并,压缩)。

久之,发现一个问题

npm install

每次不同的项目都必须使用以上命令初始化,获取相对应的依赖模块,而这些模块往往都是相似。

那么,能否多个项目共用同个 node_modules ,做到一处管理,多处复用呢?

我们尝试一下:

我们事先初始化一个 node_modules 目录,包含 grunt 等众多精彩使用到的模块

接着,我们分析一下 grunt 模块下的 task.js 文件,可以找到两处任务加载的执行函数:

// Load tasks and handlers from a given directory. task.loadTasks = function(taskdir) {} // Load tasks and handlers from a given locally-installed Npm module (installed relative to the base dir). task.loadNpmTasks = function(name) {}

从代码的注释可以获知

task.loadTasks 方法可以从指定的目录加载任务模块

task.loadNpmTasks 方法则根据当前项目下 Npm module 所在的安装目录来加载任务模块

至此,我们很快可以获得共享 node_modulse 的灵感,只要稍微改造一下 Gruntfile.js 文件,我们就可以实现之前的想法了。

// 引入 path 模块var path = require('path');module.exports = function(grunt) {    // 重新设置 grunt 的项目路径,获取当前的 package.json 文件信息    grunt.file.setBase(__dirname);    // 获取当前目录相对于共享 node_modules 目录的路径(以windows下面为例)    var nodepath = path.relative(__dirname,'D:/code/node_modules/')     grunt.initConfig({        pkg: grunt.file.readJSON('package.json'),        concat: "",        uglify: "",        clean : ""    })    // 加载任务    grunt.task.loadTasks(path.join(nodepath,"grunt-contrib-clean",'tasks'));    grunt.task.loadTasks(path.join(nodepath,"grunt-contrib-uglify",'tasks'));    grunt.task.loadTasks(path.join(nodepath,"grunt-contrib-concat",'tasks'));    // 注册任务    grunt.registerTask('build', ['concat','uglify','clean']);}

注意:

        项目目录和node_modules目录,需要在同一个目录下。

      d:/code/project

      d:/code/node_modules

转载于:https://www.cnblogs.com/lydialee/p/5842871.html

你可能感兴趣的文章
shell学习笔记 (9.3)
查看>>
用chrome在电脑上模拟微信内置浏览器
查看>>
PHP获取常用时间的总结
查看>>
设计模式6大原则:里氏置换原则
查看>>
hbase0.94.14伪分布式安装
查看>>
Debug记录:vCenter6.5突然不能访问并报错“503 Service Unavailable”
查看>>
自动导出oracle的数据
查看>>
顺序表实现的源码
查看>>
我的友情链接
查看>>
iOS调用系统摄像头和相册
查看>>
mysql文件导入办法(直接copy数据库文件)
查看>>
【二叉树】线索化二叉树
查看>>
Office365混合部署之用户权限(角色)分配
查看>>
logback配置
查看>>
rhel6配置多用户tiger vnc server
查看>>
Mac环境下svn的使用
查看>>
Pig读写HBase数据
查看>>
NumPy基础(一)
查看>>
菜鸟学Linux 第104篇笔记 varnish
查看>>
ATEN宏正盛装出席Infocomm China 2016
查看>>