我虽然在某处读到了package.json的“main”属性可以用来复制“dist”或部署所需的文件。我认为它有一个咕噜咕噜的任务,但我没有看到任何可以帮助我或指导我的事情。我现在复制node_modules下的所有内容,但我当然不需要分发库示例代码。例如。
是否有一个grunt任务或任何关于如何正确使用grunt-contrib-copy的指令,只是希望从config对象的标准pkg对象(解析的package.json文件)中复制node_module依赖项中的文件?
答案 0 :(得分:12)
package.json没有足够的信息让您知道要包含的内容。您必须解析所有require
语句,但即使这样,也有一些情况无法检测,例如模块加载资源等。
执行此操作的正确方法是让包作者忽略使用.npmignore
file甚至更好的文件,使用package.json中的files
property来明确定义应该使用的文件包括在内。
不幸的是,尽管如此,大多数包裹作者都是懒惰的,不会为此烦恼...
我建议您使用files
属性在相关模块上打开PR。
答案 1 :(得分:10)
你可以:
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-x.y.z.min.js将被复制到www / js目录。
2)使用concat任务将所有文件连接到单个dest文件(用于生成唯一的javascript / stylesheets文件)
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-x.y.z.min.js将合并为一个www / js / lib.js文件,以分号分隔。