我虽然在某处读到 package.json 的“main”属性可用于复制“dist”或部署所需的文件。我以为它有一个繁重的任务,但我没有看到任何可以帮助我或指导我的东西。我现在复制 node_modules 下的所有内容,但我当然不需要分发库示例代码,例如。
是否有关于如何正确使用 grunt-contrib-copy 的 grunt 任务或任何说明,希望从配置对象的标准 pkg 对象(解析的 package.json 文件)中复制来自 node_module 依赖项的文件?
我虽然在某处读到 package.json 的“main”属性可用于复制“dist”或部署所需的文件。我以为它有一个繁重的任务,但我没有看到任何可以帮助我或指导我的东西。我现在复制 node_modules 下的所有内容,但我当然不需要分发库示例代码,例如。
是否有关于如何正确使用 grunt-contrib-copy 的 grunt 任务或任何说明,希望从配置对象的标准 pkg 对象(解析的 package.json 文件)中复制来自 node_module 依赖项的文件?
package.json 没有包含足够的信息让您知道要包含什么。您将不得不解析出所有require
语句,但即便如此,您也无法检测到某些情况,例如模块加载资源等。
正确的做法是让包作者使用文件忽略不需要的.npmignore
文件,甚至更好的是,使用 package.json 中的files
属性来明确定义包中应包含哪些文件。
不幸的是,大多数包作者都很懒惰,不理会这些……
我鼓励您打开与该files
属性相关的模块的 PR。
你可以:
1)使用复制任务将每个相关文件复制到dest目录:
copy:
js:
files: [
{
expand: true,
cwd: 'node_modules/jquery',
src: 'jquery.min.js',
dest: 'www/js'
},
{
expand: true,
cwd: 'node_modules/jquery-mobile-bower/js',
src: 'jquery.mobile-*.min.js',
dest: 'www/js'
}
]
jquery.min.js 和 jquery.mobile-xyzmin.js 都将被复制到 www/js 目录。
2) 使用 concat 任务将所有文件连接到单个 dest 文件(用于生成唯一的 javascript/样式表文件)
concat:
options:
separator: ';'
js:
dest: 'www/js/lib.js'
src: [
'node_modules/jquery/jquery.min.js',
'node_modules/jquery-mobile-bower/js/jquery.mobile-*.min.js'
]
jquery.min.js 和 jquery.mobile-xyzmin.js 将合并到一个 www/js/lib.js 文件中,用分号分隔。