zoukankan      html  css  js  c++  java
  • 实现 node_modules 共享

    参考: https://segmentfault.com/a/1190000000610038

    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

  • 相关阅读:
    Delphi Variant 通用类型[3] 流 Stream的相互转换
    Delphi System单元 Utf8ToAnsi、AnsiToUtf8、Utf8Decode、Utf8Encode、Utf8ToUnicode、UnicodeToUtf8 转换
    OCR (Optical Character Recognition,光学字符识别)
    使用Python写Windows Service服务程序
    双精度张量内核加快了高性能计算
    A100计算能力
    A100 Tensor核心可加速HPC
    A100 GPU硬件架构
    NVIDIA深度架构
    稀疏性如何为AI推理增加难度
  • 原文地址:https://www.cnblogs.com/lydialee/p/5842871.html
Copyright © 2011-2022 走看看