我使用 Gulp 已经有一段时间了,要么我没有注意到它从一开始就占用了这么多空间,要么大小一直在增长。
我只将它用于非常正常的前端工作。例如,这是我的请求部分gulpfile.js
:
var gulp = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
browserSync = require('browser-sync'),
concat = require('gulp-concat'),
copy = require('gulp-copy'),
del = require('del'),
htmlmin = require('gulp-htmlmin'),
merge = require('merge-stream'),
streamqueue = require('streamqueue'),
cleancss = require('gulp-clean-css'),
gulpif = require('gulp-if'),
newer = require('gulp-newer'),
imgmin = require('gulp-imagemin'),
plumber = require('gulp-plumber'),
postcss = require('gulp-postcss'),
order = require('gulp-order'),
rename = require('gulp-rename'),
runSequence = require('run-sequence'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
uglify = require('gulp-uglify'),
uncss = require('gulp-uncss');
Run Code Online (Sandbox Code Playgroud)
现在,根据du -sh
,node_modules 重 2.2GB,我认为这太多了。我想更深入地挖掘,所以我查看了所有根模块:
我在这里可能很天真,但我只是期待一些 …
我已经在Cordova上成功创建并发布了一个应用程序 - 所以我不是该平台的新手,但它并非没有它的打嗝和挫折.
使用Cordova 7,我们现在有config.xml和package.json,主要包含相同的信息.
如果我想更改,说版本号或标题,我编辑哪一个,然后如何相应地更新其他文件?
我尝试过的任何东西似乎都没有用,而且必须两次进行更改似乎相当多余?
我有一个Angular 5 App.
这就是我在package.json中的内容
{
"name": "web",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "node server.js",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"postinstall": "ng build --aot --prod"
},
"private": true,
"dependencies": {
"@angular/animations": "5.1.0",
"@angular/cli": "^1.6.4",
"@angular/common": "5.0.3",
"@angular/compiler": "5.0.3",
"@angular/compiler-cli": "5.0.3",
"@angular/core": "5.0.3",
"@angular/forms": "5.0.3",
"@angular/http": "5.0.3",
"@angular/platform-browser": "5.0.3",
"@angular/platform-browser-dynamic": "5.0.3",
"@angular/router": "5.0.3",
"@ng-bootstrap/ng-bootstrap": "1.0.0-beta.5",
"@ngx-translate/core": "8.0.0",
"@types/jquery": "3.2.16",
"angular2-image-upload": "^1.0.0-rc.0",
"bootstrap": "4.0.0-beta.2",
"core-js": "2.4.1",
"express": "^4.16.2",
"jquery": "3.2.1",
"jquery-slimscroll": …
Run Code Online (Sandbox Code Playgroud) TL; DR:有没有办法npm install
在运行任何npm脚本之前自动运行如果你package.json
已经被修改了?
您拉出或签出更新的分支package.json
.你跑npm run my-script
.my-script
取决于新添加的包package.json
.my-script
失败.你想知道为什么.在翻过你的桌子之前,你npm install
一定要确定.my-script
运行成功.你不需要一张新桌子.
我知道构建/任务运行器工具就像gradle
在运行任务之前确保您的依赖项是最新的.我一直是一个(次要的)痛点,npm
没有做到这一点.我偶然发现了两个我不喜欢的解决方案.
您package.json
可以使用make
并使用其集成的依赖关系跟踪,而不是依赖于运行命令中的npm脚本,并使用以下技巧:
# Smart install: Only executes if package.json's
# modification date is later than node_module's
node_modules: package.json
npm install
@rm -f node_modules/.modified
@touch -m node_modules/.modified
install: node_modules
Run Code Online (Sandbox Code Playgroud)
资料来源:https://mattandre.ws/2016/05/make-for-hipsters/
问题是你知道必须依赖于make
运行脚本并失去npm脚本的某些优点,例如方便地引用其他脚本和并行运行脚本(npm-run-all
).如果他们不知道make
或运行有问题,也很难与他人合作(Windows).它是node/npm生态系统之外的一个古老工具,而且这个智能安装优势太高了.
另一种方法是添加一个post-merge
git钩子.
问题是该解决方案是存储库的本地解决方案,无法轻松共享.npm …
由于Github Release s 实际上是一个Git Tag s,我想package.json
在有新的 Release (和标签)时使用Github Action自动升级我的版本。
我知道我需要触发 a job
on: release
,但是根据Github Actions 文档,我不知道我是否需要触发 when created
,published
, both or all?
Github 说:
注意:发布
release
不会触发该事件draft
。
我创建了两个管道:一个on: release, type: created
和一个on: release, type: published
。
然后我创建了一个draft
版本,然后我发布了它。
只有published
管道触发,而且是在我发布版本的时候。
项目目录结构。
以下是webpack
配置文件。
webpack.config.client.js
const path = require('path');
const webpack = require('webpack');
const CURRENT_WORKING_DIR = process.cwd();
const config = {
name: 'browser',
mode: 'development',
// mode: 'production',
devtool: 'eval-source-map',
entry: [
'webpack-hot-middleware/client?reload=true',
path.join(CURRENT_WORKING_DIR, 'client/main.js'),
],
output: {
path: path.join(CURRENT_WORKING_DIR, '/dist'),
filename: 'bundle.js',
publicPath: '/dist/',
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: ['babel-loader'],
},
// To bundle image assets so that other JS code can also access
// and load it other than the component …
Run Code Online (Sandbox Code Playgroud)我正在开发 NextJs 项目,我想知道安装了哪个 NextJs 版本。我可以在哪里检查?
在我package.json
,我有一个**/*Test.js
用于匹配文件的脚本块.运行时npm
,它们与子目录不匹配多个级别.直接在命令行上执行时,它们按预期工作.
任何人都可以解释发生了什么,并提供解决方法或解决方案?
package.json
{
"name": "immutable-ts",
"scripts": {
"test": "echo mocha dist/**/*Test.js",
}
}
Run Code Online (Sandbox Code Playgroud)
% npm run test
> immutable-ts@0.0.0 test:unit .../immutable-ts
> echo mocha dist/**/*Test.js
mocha dist/queue/QueueTest.js dist/stack/StackTest.js
% echo mocha dist/**/*Test.js
mocha dist/queue/QueueTest.js dist/stack/StackTest.js dist/tree/binary/BinaryTreeTest.js
% ls dist/**/*
dist/collections.js dist/queue/QueueTest.js dist/tree/binary/BinaryTree.js dist/immutable.js.map dist/stack/Stack.js.map dist/tree/binary/BinaryTreeTest.js.map
dist/immutable.js dist/stack/Stack.js dist/tree/binary/BinaryTreeTest.js dist/queue/Queue.js.map dist/stack/StackTest.js.map
dist/queue/Queue.js dist/stack/StackTest.js dist/collections.js.map dist/queue/QueueTest.js.map dist/tree/binary/BinaryTree.js.map
Run Code Online (Sandbox Code Playgroud) 没有package.json的node.js项目可以吗?我在互联网上看到的都是package.json
没有package.json会有什么影响?
package.json是如何创建的?它是自动创建的吗?我想知道为什么我没有package.json
当凉亭慢慢"关闭"时,我发现很难从凉亭转移到npm.我设法下载了DEV软件包,但我似乎无法弄清楚如何使用等同于'main-bower-files'的npm.我找到了类似'main-npm-files'的东西但是没有办法使用"覆盖"方法,类似于bower使用的方法,指出应该复制哪些文件.
有人可以指导我如何做到这一点?如果您需要我粘贴我的package.json,请告诉我.
package.json ×10
node.js ×4
npm ×4
javascript ×3
angular ×1
angular5 ×1
bower ×1
cordova ×1
git-tag ×1
gulp ×1
heroku ×1
mocha.js ×1
next.js ×1
node-modules ×1
nodemon ×1
reactjs ×1
version ×1
versioning ×1
webpack ×1
webpack-4 ×1