安装我的 NPM 包时将文件移动到根目录

Posted

技术标签:

【中文标题】安装我的 NPM 包时将文件移动到根目录【英文标题】:Move files to root when my NPM package is installed 【发布时间】:2016-11-27 10:51:12 【问题描述】:

我目前正在处理我的回购https://github.com/Aotik/Blossom。它是一个 NPM 发布的包,名为 blossom-ui

我的问题是,有没有办法在安装软件包时将文件从node_modules/blossom-ui 移到node_modules 之外的文件夹的根目录中?

所以它看起来像

blossom-ui

css/

styl/

fonts/

js/

node_modules

...

【问题讨论】:

node_modules 目录的重点是依赖项所在的位置。为什么你的包裹需要放在别处? 我想将已编译的文件(例如 CSS 和 JS)移出 node_modules,以便轻松定位它们 我仍然希望将源文件保存在node_modules 中,以便以后构建build 脚本。 【参考方案1】:

这可以在 npm 中的 postinstall 脚本中完成。

postinstall 会在每次 npm install 完成时由 npm 自动执行。

    "scripts": 
            "test": "echo \"Error: no test specified\" && exit 1",
            "postinstall": "cp node_modules/blossom-ui ."
    ,

更多信息:npm site scripts page。

【讨论】:

【参考方案2】:

如果你使用grunt,一个简单的copy 任务就会变成这样:

copy: 
    vendor: 
        files: [
            expand: true,
            cwd: 'node_modules/bootstrap/',
            src: ['js/**', 'less/**'],
            dest: 'public/vendor/bootstrap/'
        ]
    

.....
grunt.registerTask('build', ['copy:vendor']);

例如Drywall project 使用它将引导程序和主干复制到/public/vendor 就像上面一样。如果你检查它的gruntfile.js。

请记住,如果您从 node_modules 复制,您的目标文件夹必须存在于您的 .gitignore

【讨论】:

以上是关于安装我的 NPM 包时将文件移动到根目录的主要内容,如果未能解决你的问题,请参考以下文章

将 .tsconfig 和 .tslint 文件移动到不同的目录

Maven:编译时将可执行文件(.exe)移动到目标文件夹中

将数据库代码移动到单独的程序集时将连接字符串放在哪里

llinux 复制移动命令

为啥从目录执行 ssis 包时访问文件路径被拒绝消息

linux中把一个包解压(tar)安装成功后那些软件安装在啥位置,那个解压包时产生的文件夹可以删除吗?