如何将时间戳附加到npmbuild?
我只是想了解一下npm,然后用npm/webpack/build创建构建。如何将时间戳附加到npmbuild?,npm,webpack,gulp,npm-scripts,Npm,Webpack,Gulp,Npm Scripts,我只是想了解一下npm,然后用npm/webpack/build创建构建。 如何将时间戳作为文件名的一部分添加到使用npm/webpack生成的bundle.js中?有可用的模块吗?我知道没有现有的模块。但是,这可以使用以下解决方案实现: 编写一个自定义nodejs脚本,将时间戳附加到生成的bundle.js,即将文件重命名为类似于:bundle-2018-02-14-10-16-22.js 利用钩子调用自定义nodejs脚本 注意:我假设您执行npm run build命令来生成bundle.
如何将时间戳作为文件名的一部分添加到使用npm/webpack生成的bundle.js中?有可用的模块吗?我知道没有现有的模块。但是,这可以使用以下解决方案实现:
bundle.js
,即将文件重命名为类似于:bundle-2018-02-14-10-16-22.js
npm run build
命令来生成bundle.js
。在这种情况下,下面的解决方案利用名为“postbuild”
的npm脚本来调用添加时间戳的nodejs脚本
timestamp.js 创建一个自定义nodejs脚本,如下所示。让我们将文件命名为
timestamp.js
const fs=require('fs');
const path=require('path');
const src=process.argv[2];
如果(!src){
抛出新错误(“缺少文件路径参数”);
}
const tstamp=new Date().toISOString()
.replace(/\.[\w\w]+?$/,'')//从点到点删除。
.替换(/\:|\s | T/g,“-”);//用连字符替换冒号、空格和T。
const ext=path.extname(src);
const fname=path.basename(src.replace)(ext.);
const fpath=path.dirname(src);
const dest=path.join(fpath,${fname}-${tstamp}${ext});
fs.rename(src、dest、function(err){
如果(错误)抛出错误;
});
package.json 在
package.json的scripts
部分,添加postbuild
脚本以调用timestamp.js
,如下所示:
{
...
“脚本”:{
“构建”:,
“后期生成”:“节点时间戳路径/to/bundle.js”
},
...
}
注意:您当前的构建
脚本应保持原样
跑步
执行npm run build
命令时,构建步骤将正常运行。完成后,将自动调用postbuild
脚本,并根据需要将timetsamp附加到文件名
注释
postbuild
脚本中的path/to/bundle.js
部分应更改为生成的bundle.js
文件的实际路径
- 上面的示例
postbuild
脚本当前假定timestamp.js
与package.json
位于同一目录中。例如,您可以将其保存在名为.scripts
的隐藏目录中,该目录与package.json
位于同一目录中。在这种情况下,您的postbuild
脚本需要更改为:
{
...
“脚本”:{
“构建”:,
“后期生成”:“node.scripts/timestamp path/to/bundle.js”
},
...
}
- 附加到文件名的时间戳当前使用的格式为:
YYYY-MM-DD-hh-MM-ss
- 您会注意到,
timestamp.js
行中使用了以下内容:
const dest=path.join(fpath,`${fname}-${tstamp}${ext}`);
但是,如果您运行的节点版本不支持这些,则将该行替换为以下内容(即使用+
运算符进行字符串连接):
const dest=path.join(fpath,fname+'-'+tstamp+ext);